此文主要说明如何在离线的情况下使用JavaFX程序。不明白SUN为什么不搞个JFX运行时包,或者直接包括在JRE里;而是在SUN服务器上下载。如果哪天服务器宕机,我们使用JavaFX程序的人不就惨了。闲话少叙,来看看如何解决这个问题吧。
1、安装JRE(最低需要JRE6 Update10以上)。注意,不同版本的JFX也对应不同的JRE,在离线使用的情况下。比如JFX1.2的离线包在JRE6 12(及以前)上就有问题。
2、下载相关文件到本地。
http://java.com/js/deployJava.js
http://dl.javafx.com/1.2/dtfx.js
http://dl.javafx.com/javafx-loading-100x100.gif
http://dl.javafx.com/javafx-loading-25x25.gif
deployJava.js文件用于检测JRE的安装和版本,如果未检测到JRE会自动提示并要求安装最新的JRE版本;此文件还允许网页运行Web Start程序。
dtfx.js文件用于部署JavaFX程序在网页上,并允许网页运行JavaFX程序。
3、编辑dtfx.js文件。
主要是修改此文件中相应的URL为本地或部署服务器的地址,包括三个文件:
http://java.com/js/deployJava.js
http://dl.javafx.com/javafx-loading-100x100.gif
http://dl.javafx.com/javafx-loading-25x25.gif
4、下载相关lib文件到本地。
相关的JavaFX运行时文件,根据版本和操作系统的不同文件也不同,目前1.2版本windows系统需要三个文件,分别是:
javafx-rt-windows-i586__V1.2.1_b23.jar(http://dl.javafx.com/javafx-rt-windows-i586__V1.2.0_b233.jar)
jogl-natives-windows-i586__V1.1.1a.jar(http://dl.javafx.com/jogl__V1.1.1a.jar)
gluegen-rt-natives-windows-i586__V1.0b06a.jar(http://dl.javafx.com/gluegen-rt__V1.0b06a.jar)
这三个文件由于要下载到客户端使用,所以需要引用到你的工程内,并与其他库文件一起签名使用。
5、修改JNLP文件和脚本信息。
如果是以浏览器方式运行,那么修改*_browser.jnlp文件,举例:
<?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+"> <information> <title>test</title> <vendor>MyJavaFX</vendor> <homepage href=""/> <description>test</description> <offline-allowed/> <shortcut> <desktop/> </shortcut> </information> <security> <all-permissions/> </security> <resources> <j2se version="1.5+"/> <jar href="Test.jar" main="true"/> <jar href="lib/gluegen-rt-natives-windows-i586__V1.0b06a.jar"/> <jar href="lib/javafx-rt-windows-i586__V1.2.1_b23.jar"/> <jar href="lib/jogl-natives-windows-i586__V1.1.1a.jar"/> </resources> <applet-desc main-class="package.Main"></applet-desc> </jnlp>
对应netbeans生成的*_browser.jnlp,其实我们主要就是把
<extension name="JavaFX Runtime" href="http://dl.javafx.com/1.2/javafx-rt.jnlp"/>
换成了本地已经下载好的类文件,这样就避免了运行JavaFX的时候再去服务器上下载。
修改引用JavaFX程序的相关文件,举例:
<script src="<%= path%>/dtfx.js"></script> <script> javafx( { archive: "<%= path%>/Test.jar", draggable: true, width: 300, height: 200, code: "package.Main", name: "test" } ); </script>
这里其实也就是把<script src="http://dl.javafx.com/1.2/dtfx.js">换成了本地的文件。
6、离线运行JavaFX程序(web形式)
通过以上几步的操作,就可以完全脱离互联网而运行JavaFX程序了。