我尝试使用各种教程来获取在浏览器中运行的JavaFX hello world应用程序。我不敢相信这很难,所以我正在寻找任何洞察我可能做错的事情。我试过并解决的一些事情(排除显而易见的事实):
我最终得到的是加载.html(使用JavaFX默认javascript引用jnlp)会旋转一段时间然后失败。如果我尝试直接加载.jnlp文件,我会得到一个例外:
ClassNotFoundException: javafx.application.Application
我验证了jfxrt.jar位于浏览器正在使用的JRE的lib文件夹中。
关于此时我可能缺少什么的任何见解/建议?看起来在这一点上它必须是明显/基本的东西,但我没有看到它。感谢。
答案 0 :(得分:1)
为了跟进,我继续使用javafxpackager。这产生了一个可以在Chrome中加载JavaFX应用程序的网页。但是,它仍然无法在IE中运行。我打算把它写成IE,但因为它适用于Chrome。但是,通过查看结果我所学到的是,javafxpackager做了几件事,其结果并不完全是大多数手册教程/示例中描述的内容。微小的差异,但显然它们很重要。
答案 1 :(得分:0)
听起来好像你的JAR中没有JavaFX入门类(通常由Ant脚本完成),并且没有正确的JavaFX Manifest条目。
不需要将jfxrt.jar作为资源添加到JNLP文件中,您不必签名。
请显示您的清单文件。
Manifest文件至少应包含以下JavaFX条目:
JavaFX-Version: 2.2
JavaFX-Application-Class: yourPackage.YourApplication
Main-Class: com/javafx/main/Main
JAR应该包含ant-javafx.jar提供的com.javafx.main
包的类(请参阅该jar中的/ resources / classes)。 ant-javafx.jar由JDK提供。
答案 2 :(得分:-1)
我能够解决我的问题。我使用的是Eclipse,而不是NetBeans,因此需要手动执行。基本问题是我必须将jfxrt.jar作为资源包含在jnlp文件中(并且该jar也必须被签名)。
我的应用程序现在运行,如果我直接访问jnlp,虽然它仍然无法通过html页面工作。如果/当我想出那部分时,我会发布更新。