サードパーティのライブラリに依存するJavaアプレットと、JNIを介して呼び出されるDLLを作成しました。これらは明らかにクライアントコンピュータにはインストールされません。これらのサードパーティライブラリと外部DLLをアプレットのJAR内にパッケージ化して、ベースJavaがインストールされている任意のクライアントで実行できるようにする方法はありますか?
1579 次
3 に答える
1
Webアプリケーション内でJNIを使用することは、特にWindowsでの胸焼けのレシピです。
- 明らかに、WARファイル内にDLLをデプロイすることはできず、おそらくデプロイヤーが事前に別のインストーラーを実行する必要があります。
- 正しくセットアップされていることを確認する必要があります
java.library.path
。これは通常、WARファイルにデプロイ可能なものではなく、アプリケーションサーバーの設定によって行われます。 - JNIがネイティブクラスをライブラリにリンクする方法では、そのWebアプリケーションの複数のインスタンスを実行しようとすると、クラスローダーの問題が発生します。これを回避する1つの方法は、含まれているJARファイルを共有クラスローダー(Tomcatの共通フォルダーなど)に移動することですが、これには独自の問題があります。
于 2010-07-06T17:26:06.343 に答える
1
これらのサードパーティのライブラリをパッケージ化する方法はありますか
Eclipseでは、Javaプロジェクトのプロパティ(右クリック)で、次のことができます。
Export... => Export as Runnable JAR
次に、jarの依存関係をエクスポートされたJARにパックするように指示します。エクスポートされたJARには、すべての依存関係がパックされます。
代替テキストhttp://www.ubuntu-pics.de/bild/97131/selection_016_mg6IDm.png
于 2010-07-06T17:32:40.243 に答える
1
私はこのトピックの専門家ではありませんが、これらすべての問題に対する実用的な解決策があります。彼らはあなたに頭痛を与えるかもしれませんが、いくつかのことはこの方法でしか行うことができません(そして私はあなたのEntrust CSPの問題がそれらの1つであると確信しています)。
OpenOCES-projectからOpenSignを見ることができます。魔法はorg.openoces.opensign.client.applet.bootstrapで起こります。
JNLPAppletLauncherでも同じ問題が解決すると思いますが、私はiの経験がありません。
于 2010-07-07T18:57:22.120 に答える