北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

inline-java パッケージを WSL へインストール

ハマってガチャガチャしたので間違いあるかもしれないけどメモ。

まずjavaをインストール。入れるのは default-jdk のほうがいい気もする。

$ sudo apt install openjdk-9-jre-headless
$ sudo apt install openjdk-9-jdk-headless

jvm パッケージを入れるのに必要と思われる環境変数

$ export JAVA_HOME=/usr/lib/jvm/java-9-openjdk-amd64
$ export LD_LIBRARY_PATH=/usr/lib/jvm/java-9-openjdk-amd64/lib/amd64/server

jni パッケージのために stack.yaml へパスを追加。

extra-include-dirs:
  - /usr/lib/jvm/java-9-openjdk-amd64/include/linux
  - /usr/lib/jvm/java-9-openjdk-amd64/include
extra-lib-dirs:
  - /usr/lib/jvm/java-9-openjdk-amd64/lib/amd64/server

stack build inline-java してビルドする環境が整ったことを確認。

サンプルは依存パッケージに inline-javajvm を入れて、以下のような感じで。 DataKinds がいつの間にか必要になってたようだったので加えた。

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE QuasiQuotes #-}
{-# OPTIONS_GHC -fplugin=Language.Java.Inline.Plugin #-}
import Language.Java (withJVM)
import Language.Java.Inline

main :: IO ()
main = withJVM [] [java| { System.out.println("Hello Java!"); } |]

実行。

$ stack exec java-sample
Hello Java!