JavaでWebViewを使ってみる。
簡単にやるには、JavaFXのWebViewを使えばできる。
しかし、cssの当たり方が微妙だったり、IndexedDBがなかったりとして、いまいち使い勝手が悪かった。
ということで、いろいろ検索をした結果Java Chromium Embedded Frameworkを使ってみた。
gradleあたりで引っ張ってきてってことはできないっぽいので、BranchesAndBuildingを参考に、ライブラリをビルドする。
わりかし簡単にビルドできたものの、なぜかPythonのバージョンが違っていたらしく、一部パッチを当ててビルドする必要があった。
以下を一括置換:
base64.encodestring -> base64.encodebytes
base64.encodestring -> base64.decodebytes
以下のバッチファイルでサンプルが実行できる。
binary_distrib/win64/run.bat
サンプルのソースは、以下のファイルとなっている。
./java/tests/detailed/MainFrame.java
./java/tests/simple/MainFrame.java
ちなみに、simpleは動かなかったので、以下のコードを入れてあげる必要があった。
CefMessageRouter msgRouter = CefMessageRouter.create();
client_.addMessageRouter(msgRouter);
組み込み方
冗長なのがあるかもしれないが、これくらい。
dependencies {
api "binary_distrib/win64/bin/gluegen-rt.jar"
api "binary_distrib/win64/bin/jogl-all.jar"
api "binary_distrib/win64/bin/jcef.jar"
}
run {
systemProperty "java.library.path", "binary_distrib/win64/bin/lib/win64"
}