在Java applet中动态加载本机库

时间:2009-03-13 15:32:36

标签: java applet java-native-interface rxtx

我正在尝试编写一个将从用户的串行端口读取的Java小程序。为此,我使用Java Comm APIRXTX library结合使用。我已成功设法通过本地Java应用程序读取数据,但我似乎无法在applet中执行相同的操作。问题是RXTX库是一个本机库,我还没有找到在Java applet中加载这个库的方法。我发现了两篇有趣的文章(使用JNI in Applets引用this article),但两者都超过10年,我想知道是否有更新的解决方案。或者如果你能提出另一种选择,我很乐意听到它!

5 个答案:

答案 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