19

私の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内の1つのjarです。

JRE6を使用してx264.jarをロードすると、正常に機能しました。しかし、JRE7にアップデートすると、x264.jarをロードできません。

JRE6を使用する場合、urlはjarのように「x264.jar」情報になります:http://test.local:8080 / JNLP.jar!/x264.jar、ただしJRE7を使用すると、urlはnullになり、コードが見つかりませんでしたnativelib「x264.jar」をロードします

JRE7がnativelib.jarをロードできないことを知っている人はいますか?Thread.currentThread()。getContextClassLoader()を使用して「x264.jar」をロードする際の問題はありますか?

4

4 に答える 4

1

JRE と一致する正しいビット単位のネイティブ バイナリがあることを確認します。64 ビットの JRE でテストする場合は、64 ビットのネイティブ バイナリが必要です。32 ビットの JRE でテストする場合は、32 ビットのネイティブ バイナリが必要です。次の 3 つのそれぞれにリソースを含める必要がある場合があります。

<resources os="Windows" arch="amd64">
<resources os="Windows" arch="x86_64">
<resources os="Windows" arch="x86">
于 2014-01-21T04:05:22.310 に答える
0

少し前にこれを解決したことを忘れていました。System.loadLibrary( "jarNameNoExtension" ); を使用して Java コードでこれを処理する必要があることがわかりました。

うまくいけば、それは他の人に役立ちます。

于 2014-10-30T14:47:41.450 に答える
0

次の「dll 依存」アプレットは正常に動作しています (1.7.0_51 を使用する場合のセキュリティの問題以外に (自己署名であるため、セキュリティ設定を中程度に下げる必要があります))。したがって、jnlp ファイルのネイティブ lib ロード メカニズムが壊れている場合は、上の例のように、.dll ファイルを通常の jar ファイルと一緒に配布できます。

  1. 例のように jar ファイルに dlls/sos を入れます: jssc.jar
  2. ここでSystem.load(libFolderPath + fileSeparator + libName);使用されるようなライブラリをロードします。
  3. Joseph が述べたように、win、solaris、linux、arm、および i86 と amd64 ビット システム間の細かいバージョンの違いに注意してください。たとえば、64ビットのdllを提供せずに64ビットのJavaで実行すると、機能しません...
于 2014-02-18T21:42:47.347 に答える