我正在尝试编写一个将从用户的串行端口读取的 Java 小程序。为此,我将Java Comm API与RXTX 库结合使用。我已经成功地设法通过本地 Java 应用程序读取数据,但我似乎无法从小程序中执行相同的操作。问题是 RXTX 库是一个本地库,我还没有找到在 Java 小程序中加载这个库的方法。我发现了两篇有趣的文章(Using JNI in Applets其中引用了这篇文章),但都已有 10 多年的历史,我想知道是否有更新的解决方案。或者,如果您可以提出替代方案,我很想听听!
5 回答
使用 Java Web Start。您可以将本机库作为签名的 jar 包含在内,一切都应该正常工作。
1)将本机库放在根目录中的 jar 中 2)签署所有 jar 3)编写引用所有 jar 的 JNLP(去搜索如何编写 jnlp)
之后它应该工作
首先,我建议在 Applet 中这样做可能是个坏主意。
如果您仍然继续,JNLPAppletLauncher可能会有所帮助。
我不知道小程序,除了它们被严重锁定。安全/访问机器的资源等。
如果您需要可在 Web 上部署的解决方案,您是否看过Java Web Start?请特别参阅此常见问题解答条目
坦率地说,尝试从 Java 小程序访问设备是一个坏主意,即使你可以让它工作,而将动态库加载到传统小程序中是一个更糟糕的主意。事实上,如果你能找到一种方法来欺骗现代浏览器,我会感到惊讶。(考虑可能的安全隐患。)
正如其他问题所建议的那样,您最好构建一个可以通过 Web Start 启动的应用程序。
我也会对这里的答案很感兴趣。我的建议是将 RXTX 的 .jar 和 .dll 安装到 \program files\java\ 树中。您可以在尝试使用小程序之前将它们安装在目标系统上。我喜欢使用 Java Web Start 的想法。如果你签署小程序,你不能在机器上读/写任何文件吗?所以你可以安装 .jar 和 .dll 然后再使用它们?
对于 Windows,我建议使用“Windows Java Serial Com Port Driver”而不是 rxtx。您可以从http://www.engidea.com/blog/informatica/winjcom/winjcom.html下载它。 我发现它更容易安装和使用,而且更无错误。我无法将 RXTX 与 USB 串行设备一起使用,因为拔下 USB 端口时 RXTX 会崩溃。winjcom 为我解决了这些问题,等等。
我仍在尝试决定如何部署 DLL,但我并不担心,因为我不希望“Windows Java Serial Com Port Driver”的 DLL 发生变化。-斯托什