更新到 JRE7,无法加载 nativelib jar,但 JRE6 工作正常

2022-09-02 14:11:24

对于我的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,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”的问题是什么?


答案 1

确保具有正确的按位本机二进制文件以匹配 JRE。如果要在 64 位 JRE 上进行测试,则需要 64 位本机二进制文件。如果要在 32 位 JRE 上进行测试,则需要一个 32 位本机二进制文件。您可能需要为以下三种方法中的每一项都包含资源:

<resources os="Windows" arch="amd64">
<resources os="Windows" arch="x86_64">
<resources os="Windows" arch="x86">

答案 2

我也有类似的麻烦;然而,即使在JRE 6中,这也没有使它起作用。

发现了一个可能与此相关的错误:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6758884

显然,JRE 在下载 nativelib 资源时可能会遇到麻烦。

该错误仍然打开,并针对Java的版本8 ...


推荐