在Java applet中动态加载本机库

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

使用Java Web Start。 您可以将本机库包含在已签名的jar中,一切都应该有效。

1)将原生图书馆放在ROOT目录中的一个jar子里2)签署所有jar子3)写一个引用所有jar子的JNLP(去搜索如何写jnlp的)

之后它应该工作

首先,我建议在Applet中这样做可能是一个坏主意。

如果您仍然继续, JNLPAppletLauncher可能会提供帮助。

我不知道applet,除了他们被严重锁定。 安全/访问机器的资源等

如果您需要可部署Web的解决方案,您是否看过Java Web Start ? 请参阅此FAQ条目

坦率地说,尝试从Java applet访问设备是一个坏主意,即使你可以使它工作,并将动态库加载到传统的applet是一个更糟糕的想法; 事实上,如果你能找到一种方法来欺骗现代浏览器,我会感到震惊。 (考虑可能的安全隐患。)

根据其他问题的建议,您最好建立一个可以通过Web Start启动的应用程序。

我也真的对这里的答案感兴趣。 我的建议是将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下载它。我发现它更容易安装和使用,而且更加无错误。 我无法将RXTX与USB串行设备一起使用,因为当USB端口拔下时RXTX会崩溃。 winjcom为我解决了这些问题,等等。

我还在尝试决定如何部署DLL,但我不会出汗,因为我不希望“Windows Java Serial Com Port Driver”的DLL发生变化。 -Stosh