FXShellはSandboxで動かない
将来的にはShellが整備されるかCompilerが一般的になるかでまともに動くようになると思うのだけど、現状ではWeb StartからFX Scriptを動かそうと思うとJARファイルに署名するしかない。
以下はNetBeans*1のWebアプリケーションプロジェクトでJavaFX ApplicationプロジェクトのJARファイルをWeb Startで配布する設定のメモ。
今回はJNLPをJSPで生成するためWeb Startモジュールは使わず*2、Webアプリケーションプロジェクト側で署名する。
- プロジェクト > Webアプリケーションプロジェクト > プロパティー > パッケージング
- 了解
- ファイル > Webアプリケーションプロジェクト > build.xml
- signjarタスクを含む-post-compileターゲットを追加(後述ソースコード参照)
- 保存
- プロジェクト > Webアプリケーションプロジェクト > 新規 > JSP...
- メニュー > 実行 > ファイルを実行
以上でJava Web StartからFXアプリケーションが立ち上がれば成功。
ソースコード
Antターゲット
build.xmlのproject要素の末尾に追加。
そこらにあるJARファイル全部に署名してしまうので注意。
<target name="-post-compile"> <signjar keystore="keystoreのパス" alias="keystoreのエイリアス" storepass="keystoreのパスワード"> <fileset dir="${build.web.dir.real}" includes="*.jar" /> </signjar> </target>
JNLP生成用JSPXスクリプト
URLをハードコーディングしたくないので用意した。JnlpDownloadServletを使えばバージョン管理もできる。
<?xml version="1.0" encoding="UTF-8"?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> <jsp:directive.page contentType="application/x-java-jnlp-file;charset=UTF-8"/> <jsp:output omit-xml-declaration="false"/> <jnlp spec="1.5+" codebase="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.servletContext.contextPath}" href="JNLP生成用JSPXスクリプト自身のファイル名"> <information> <title>任意</title> <vendor>任意</vendor> </information> <resources> <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/> <jar href="javafxrt.jar"/> <jar href="Filters.jar"/> <jar href="swing-layout.jar"/> <jar href="JavaFX ApplicationプロジェクトのJARファイル"/> </resources> <security><all-permissions/></security> <application-desc main-class="net.java.javafx.FXShell"> <argument>JavaFX Applicationプロジェクトのメインクラス</argument> </application-desc> </jnlp> </jsp:root>