Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

Scala Nativeでjava.nio.channels.AsynchronousServerSocketChannelがないと言われたら見るページ

Scala Nativeでhttp4sなどを使おうとするとビルドタイミングでこのようなメッセージが出たりする:

Found a call to not defined static method Member(Top(java.nio.channels.AsynchronousServerSocketChannel),D4openL42java.nio.channels.AsynchronousChannelGroupL49java.nio.channels.AsynchronousServerSocketChannelEo). Static methods are generated since Scala Native 0.4.3, report this bug in the Scala Native issues.
Call defined at file:/home/runner/work/fs2/fs2/io/jvm-native/src/main/scala/fs2/io/net/SocketGroupPlatform.scala:94:53

対応

index.scala-lang.org

epollcatをライブラリに追加する(READMEも軽く読もう)。

なぜ

fs2-ioの上に造られているライブラリをScala Native向けにビルドしようとすると、JVMと違ってNativeそのものには非同期I/O用の仕組みがないのでビルドできない。

そこでepollcatの出番となる。epollcatはepoll/kqueueのラッパーであり、fs2-ioが必要とする非同期I/O処理を肩代わりする。

使い方はIOAppEpollAppに、またはIOApp.SimpleEpollApp.Simpleに置換するだけだ。

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?