使用来自dll的本机方法加载jar的正确路径

时间:2013-01-18 15:41:51

标签: dll applet java-native-interface java

我想加载一个jar,只需调用System.loadLibrary并在系统内加载一个dll。 jar还包含所有本机方法实现。

由于applet有一个类加载器并且调用System.loadLibrary两次抛出UnsatisfiedLinkError我无法将jar加载到applet本身(如果我这样做会抛出异常并且连续的本机调用将什么都不做。)

意识到这个问题,hacky解决方案是将jar放入java类路径,因此它将被加载一次(来自JRE的ext /文件夹)。

我的问题是: 如果不将jar放在java ext文件夹中或在系统中创建另一个类路径条目,解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用Java Web Start部署原生代。

  • 将本机放在已签名的Jar系统的根目录中。例如。
    • native-win.jar
    • native-osx.jar
    • native-nix.jar
  • 创建一个扩展JNLP,它引用特定于操作系统的resources部分中的每个Jar。
  • 在主applet或应用程序JNLP中引用扩展名。

自1.2以来,JWS可用于启动自由浮动帧和applet。最近,还可以使用JWS部署applet,并将其嵌入到网页中。