1

UbuntuでFirefoxまたはChromiumを実行している複数のJava3Dアプレットを含むWebページがあります。いずれのアプレットも起動できますが、ブラウザで「戻って」別のJava3Dアプレットを起動しようとすると、次のようになります。

java.lang.UnsatisfiedLinkError:Native Library /lib/libj3dcore-ogl.so already loaded in another classloader

Webブラウザを閉じて再起動すると、他のアプレットを起動できますが、もう一度、別のアプレットを起動しようとすると、上記のエラーが発生します。

Webブラウザーとは異なり、Eclipseでは必要な数のJava3Dアプレットを実行できます。(驚くべき-Javaで重複するOpenGLウィンドウ!)

ブラウザを再起動せずに別のアプレットを実行した後、ブラウザでJava3Dアプレットを実行する方法はありますか?

注:ページを離れることは、アプレットが閉じていることを意味するのではなく、ブラウザーに関する限り実行されていると感じています。おそらく、ページが残されたときにアプレットを強制的に終了させるJavascriptですか?

エラーを確認したい場合は、からzipファイルをダウンロードしてください。

http://jat.sourceforge.net/node/24

抽出し、デプロイでindex.htmlを開いてローカルで実行します(インターネット上のアプレットはまったく実行されません-まだ実行されていません)。次に、1つのアプレットを開き、戻って、別の3Dアプレットを実行してみます。

4

1 に答える 1

0

うーん、これは Java セキュリティの最悪のエラーの 1 つです。問題は単純です。ページを開いてアプレットがネイティブ ライブラリをロードすると (ブラウザでのスキャンに Morena を使用します)、すべて正常に動作しますが、更新すると、アプレットが試行しますネイティブ ライブラリをリロードしますが、ブラウザはアプレットをキャッシュに保存します (その方法で再度ダウンロードする必要はありません)。その場合、ネイティブは既にロードされており、セキュリティ上の問題が発生します。ネイティブ リソースを 2 回ロードできない理由(はい、あなたのアプレットは 1 つしか実行しませんが、アプレットがロードされるたびに呼び出されますが、クラス ローダーは初回のみ作成されます)。解決策はありません... MUAJAJAJAJA!、いや、実際には、ライブラリ (ネイティブ リソースを使用するもの) を追加して、それらを Java/extensions に直接追加できます。ただし、アプレットをロードするだけでなく、追加の手順が必要になります。アプレットでネイティブ コードを実行するために必要なので、既に jar を歌ったと思いますが、今日まで、ネイティブを使用するアプレットでその更新の問題をスキップできず、それらを拡張機能フォルダーに追加するだけです

于 2012-10-03T23:09:19.167 に答える