1

System.loadLibraryシステム内で dll を1 回呼び出してロードする jar をロードしたいと考えています。jar には、すべてのネイティブ メソッドの実装も含まれます。

アプレットには単一のクラスローダーがあり、System.loadLibrary2 回スローUnsatisfiedLinkErrorを呼び出すと、アプレット自体で jar をロードすることはできません (そうすると、例外がスローされ、連続したネイティブ呼び出しは何もしません)。

この問題を認識しているハックなソリューションは、jar を Java クラスパスに配置して、一度ロードされるようにします (JRE の ext/folder)。

私の質問は次のとおりです。jarをjava extフォルダー内に配置したり、システムに別のクラスパスエントリを作成したりせずに、この問題を解決するための正しい動きは何ですか?

4

1 に答える 1

2

最も簡単な方法は、 Java Web Startを使用してネイティブをデプロイすることです。

  • システムごとに署名済みの Jar のルートにネイティブを配置します。例えば
    • native-win.jar
    • native-osx.jar
    • native-nix.jar
  • OS 固有のセクションで各 Jar を参照する拡張 JNLP を作成しますresources
  • メイン アプレットまたはアプリケーション JNLP で拡張機能を参照します。

JWS は、1.2 以降、無料のフローティング フレームとアプレットを起動するために使用できました。最近では、JWS を使用してアプレットをデプロイし、Web ページに埋め込んだままにすることもできます。

于 2013-01-18T22:07:50.750 に答える