我有一个应用程序可以正常运行" java -jar blah.jar"从Eclipse导出为可运行的jar后,让它"将所需的库打包到生成的JAR"。
我添加了一些JavaFX代码来弹出Web浏览器。现在似乎不可能制作一个可以在小型Java版本中运行的可运行jar。当我将它导出为可运行的jar时,它会复制到我的次要版本特有的jfxrt.jar中。如果我使用" java -jar blah.jar"运行这个jar。对于完全匹配的java版本(jdk1.7.0_17)然后它工作正常,但如果我使用一个稍微更新(jdk1.7.0_45),那么它无法正确解析swingx类。非常适合"写一次在任何地方运行"。
我尝试使用JavaFX ant任务,但我无法完成实际打包从属jar的任务。这实际上并没有在它创建的jar中包含fx:resources jar,就像魔法eclipse"将所需的库打包到生成的JAR"做得很好:
<fx:jar destfile="${dist}/${dist.jar}">
<fx:application id="BlahTesterApp"
mainClass="blah.MainClass"
toolkit="swing"/>
<fileset dir="${build}"/>
<fx:resources>
<fx:fileset dir="${lib}" includes="**/*.jar" />
</fx:resources>
<manifest>
<attribute name="Implementation-Vendor" value="My Team"/>
<attribute name="Implementation-Title" value="Tester App"/>
</manifest>
</fx:jar>
似乎只能创建&#34;原生捆绑&#34;这是我不想要的。我不想让用户在以前能够运行darn jar时安装rpm或deb。
我不明白为什么Oracle必须在这里引入自己神奇的额外部署层。他们不希望人们使用JavaFX吗?
答案 0 :(得分:9)
JavaFX打包替代方案
备用(1),e(fx)clipse包装,因为您使用的是Eclipse,所以建议您使用它。
<强>建议强>
永远不要尝试在您的应用程序中包含Java平台库(例如jfxrt.jar)。您在互联网上找不到的指南应该指示您做这样的事情(由于您在问题中概述的次要版本问题之间明显不兼容)。此规则的唯一例外是,如果您要构建一个自包含的本机安装的应用程序,它不依赖于预安装的JRE(您不是这样)。