我的Java FX2应用程序配置串行设备,作为部署的一部分,它必须安装Windows设备驱动程序并将本机库(RxTx串行端口库)复制到Java目录中 .
Java Web Start可以处理吗?或者用户应该分阶段执行:手动安装驱动程序,然后通过libs复制,然后通过Web Start安装应用程序 .
Update: 下面的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内容类型application / 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:从元素'security'开始发现无效内容 . 其中一个'{resources,application-desc,applet-desc,component-desc,installer-desc}'是预期的 . cvc-complex-type.2.4.a:从元素'security'开始发现无效内容 . 其中一个'{resources,application-desc,applet-desc,component-desc,installer-desc}'是预期的 . XML编码未知,但声明为未指定的utf-8 Codebase . 默认为文件:/ D:/ Profiles / Anil / My%20Documents / NetBeansProjects / MyApp / dist /可以通过删除download ='eager'的(默认)值来优化MyApp.jar中的资源下载 . 可以通过删除main ='false'的(默认)值来优化MyApp.jar中的资源下载 . 有可能优化应用程序的启动 . 通过为MyApp.jar资源指定download ='lazy' . 除非指定了下载“部分”,否则延迟下载可能无法按预期为MyApp.jar工作 . 资源'lib / RXTXcomm.jar'声明为大小'66490',但实际上是'66512' . 可以通过删除download ='eager'的(默认)值来优化lib / RXTXcomm.jar上的资源下载 . 可以通过删除main ='false'的(默认)值来优化lib / RXTXcomm.jar上的资源下载 . 有可能优化应用程序的启动 . 通过为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");
那也失败了 .
2 回答
只要您保留在沙箱(未签名的应用程序)中,您将无法访问本地文件系统 . 关于设备驱动程序安装,我认为签名的应用程序也可以这样做,但它可能会触发Windows确认 .
见http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/security.html
有用的是这个
来自维基http://rxtx.qbang.org/wiki/index.php/Deploying_JAVA_with_RXTX
(安德鲁)在jnlp中放置'nativelib'指令的建议不起作用 .