我的 Java FX2 应用程序配置了一个串行设备,作为部署的一部分,它必须安装 Windows 设备驱动程序并将本机库(RxTx 串行端口库)复制到 Java 目录中。
Java Web Start 可以处理吗?或者用户应该分阶段进行:手动安装驱动程序,然后复制库,然后通过 Web Start 安装应用程序。
更新: 下面的 MyApp.jar 是自签名的。我将dll放在项目名称下。我在 jnlp 中为 dll 添加了这一行。我使用的是 Netbeans 7.3,所以放了 VM args 行。我的 jnlp 看起来像这样:
<resources>
<j2se version="1.6+" java-vm-args="-Djava.library.path=. " href="http://java.sun.com/products/autodl/j2se"/>
<jar href="MyApp.jar" size="216992" download="eager" />
<jar href="lib/RXTXcomm.jar" size="66493" download="eager" />
<nativelib href="rxtxSerial.dll" size="122880" download="eager" />
</resources>
<security>
<all-permissions/>
</security>
我可以在 Netbeans IDE 中运行该应用程序。但是,单击 jnlp,我会弹出“运行时错误”。它要求我单击以查看详细信息,但没有显示任何内容。我在 Java 控制面板的 Temporary Internet Files 中删除了早期的 jnlps。在 Java 控制台中,我什么也看不到。
@AndrewThompson 我试过 Janela 来检查 jnlp。有用的工具!我看到 dll 没有进入 dist 文件夹。jnlp 由 NB 7.3 生成。有没有办法让它加入nativelib?我每次都必须手动完成。`
JaNeLA 报告 - 版本 11.05.17
文件报告:/D:/Profiles/Anil/My%20Documents/NetBeansProjects/MyApp/dist/MyApp.jnlp
内容类型应用程序/xml 不等于预期的应用程序类型/x-java-jnlp-file cvc-complex-type.2.4.a:发现以元素“jfx:javafx-runtime”开头的无效内容。需要“{java, j2se, jar, nativelib, extension, property, package}”之一。cvc-complex-type.2.4.a:发现以元素“jfx:javafx-runtime”开头的无效内容。需要“{java, j2se, jar, nativelib, extension, property, package}”之一。cvc-complex-type.2.4.a:发现以元素“安全”开头的无效内容。需要“{resources, application-desc, applet-desc, component-desc, installer-desc}”之一。cvc-complex-type.2.4.a:发现以元素“安全”开头的无效内容。'{resources, application-desc, applet-desc, component-desc, 安装程序描述}' 是预期的。XML 编码未知,但声明为 utf-8 未指定代码库。默认为 file:/D:/Profiles/Anil/My%20Documents/NetBeansProjects/MyApp/dist/ MyApp.jar 中的资源下载可以通过删除 download='eager' 的(默认)值来优化。MyApp.jar 中的资源下载可以通过删除 main='false' 的(默认)值来优化。可能可以优化应用程序的启动。通过为 MyApp.jar 资源指定 download='lazy'。除非指定了下载“部分”,否则延迟下载可能无法按预期对 MyApp.jar 进行。资源“lib/RXTXcomm.jar”声明为大小“66490”,但实际上是“66512”。在 lib/RXTXcomm 下载资源。jar 可以通过删除 download='eager' 的(默认)值来优化。lib/RXTXcomm.jar 中的资源下载可以通过删除 main='false' 的(默认)值来优化。可能可以优化应用程序的启动。通过为 lib/RXTXcomm.jar 资源指定 download='lazy'。lib/RXTXcomm.jar 的延迟下载可能无法按预期工作,除非指定了下载“部分”。获取资源 rxtxSerial.dll 时出现问题。D:\Profiles\Anil\My Documents\NetBeansProjects\MyApp\dist\rxtxSerial.dll(系统找不到指定的文件)` 通过为 lib/RXTXcomm.jar 资源指定 download='lazy'。lib/RXTXcomm.jar 的延迟下载可能无法按预期工作,除非指定了下载“部分”。获取资源 rxtxSerial.dll 时出现问题。D:\Profiles\Anil\My Documents\NetBeansProjects\MyApp\dist\rxtxSerial.dll(系统找不到指定的文件)` 通过为 lib/RXTXcomm.jar 资源指定 download='lazy'。lib/RXTXcomm.jar 的延迟下载可能无法按预期工作,除非指定了下载“部分”。获取资源 rxtxSerial.dll 时出现问题。D:\Profiles\Anil\My Documents\NetBeansProjects\MyApp\dist\rxtxSerial.dll(系统找不到指定的文件)`
我将 dll 放入 jar 中,并添加了
System.loadLibrary("./rxtxSerial");
That too failed。