2

我的 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。

4

2 回答 2

0

起作用的是这个

使用更简单的方法(确认在使用 NetBeans 或 Borland JBuilder 时有效):

添加 RXTXcomm.jar 作为库

编译(构建)您的应用程序

将 rxtxSerial.dll 添加到分发文件夹的根目录(使用 NetBeans 时为projectname /dist)

来自维基http://rxtx.qbang.org/wiki/index.php/Deploying_JAVA_with_RXTX

将“nativelib”指令放入 jnlp 的建议(来自 Andrew)没有奏效。

于 2013-03-11T15:24:20.593 回答
0

只要您留在沙箱(未签名的应用程序)中,您就无法访问本地文件系统。关于设备驱动程序的安装,我想签名的应用程序也可以这样做,但它可能会触发 Windows 确认。

请参阅http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/security.html

于 2013-03-07T11:09:28.687 回答