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