对于我的JNLP文件,有一些如下所示的nativelib信息:
<resources os="Windows">
<nativelib href="lib/x264-win.jar" />
</resources>
<resources os="SunOS" arch="sparc">
<nativelib href="lib/x264-SunOS-sparc.jar" />
</resources>
<resources os="SunOS" arch="x86">
<nativelib href="lib/x264-SunOS-x86.jar" />
</resources>
当我更新到JRE7时,无法加载nativelib jar,但JRE6工作正常。
加载nativelib代码如下:
String source = "x264.jar";
ClassLoader cl = Thread.currentThread().getContextClassLoader();
URL url= cl.getResource(source);
“x264.jar”是x264-win.jar中的一个jar,lib / x264-SunOS-sparc.jar或lib / x264-SunOS-x86.jar。
当我使用JRE6加载x264.jar时,它工作正常。 但是当我更新到JRE7时,它无法加载x264.jar。
当使用JRE6时,url将是“x264.jar”信息,如jar:http://test.local:8080/JNLP.jar!/x264.jar, 但是使用JRE7,url会为null,我发现代码没有加载nativelib“x264.jar”
是否有人发现JRE7无法加载nativelib.jar? 是使用Thread.currentThread()。getContextClassLoader()来加载“x264.jar”的问题吗?
答案 0 :(得分:1)
确保您具有正确的按位原生二进制文件以匹配您的JRE。如果要在64位JRE上进行测试,则需要64位本机二进制文件。如果您正在测试32位JRE,则需要32位本机二进制文件。您可能需要为这三者中的每一部分包含资源:
<resources os="Windows" arch="amd64">
<resources os="Windows" arch="x86_64">
<resources os="Windows" arch="x86">
答案 1 :(得分:0)
我有类似的麻烦;然而,即使在JRE 6中,这也无法实现。
发现了一个可能与之相关的错误:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6758884
显然JRE可能无法下载nativelib资源。
该错误仍然打开,并且针对java版本8 ...
答案 2 :(得分:0)
以下“dll relying”applet工作正常(除了使用1.7.0_51时的安全问题(您需要将安全设置降低到中等,因为它是自签名的))。 因此,如果jnlp文件的本机lib加载机制被破坏,那么您可以将.dll文件与普通jar文件一起分发,如上例所示。
答案 3 :(得分:0)
我忘记了我刚才解决了这个问题。我发现我必须使用System.loadLibrary在Java代码中处理这个问题(&#34; jarNameNoExtension&#34;);
希望能帮助他人。