0

現在、Spring MVC、IDE として netbeans、Web サーバーとして tomcat を使用して Java Web アプリケーションを開発しています。

サードパーティの jar を使いたいのですが、単純な Java アプリケーションで jar を使用しても問題はないようです。しかし、webapp で使用すると、エラーが発生します。これはエラー メッセージです。

Caused by: java.lang.UnsatisfiedLinkError: Native Library C:\Program Files (x86)\SafeNet\Protect Toolkit C SDK\bin\jcprov.dll already loaded in another classloader

これは、jar 内のクラスを呼び出すコードです。

    CryptokiEx.C_Initialize(new CK_C_INITIALIZE_ARGS(CKF.OS_LOCKING_OK));
//below code cause error
    CryptokiEx.C_OpenSession(0, CKF.RW_SESSION, null, null, session);

コードの 2 行目でエラーが発生します。

コードが初めて実行されたときはエラーは発生しませんでしたが、その後は常にエラーが発生します。netbeans から tomcat を停止し、netbeans を閉じてから再度開いてみましたが、それでもエラーが発生します。

私は答えをグーグルで検索しましたが、それは私にこのリンクを示しています:

http://wiki.apache.org/tomcat/HowTo#I.27m_encountering_classloader_problems_when_using_JNI_under_Tomcat

しかし、ネイティブ ライブラリをロードするクラスは $CATALINA_HOME/shared/lib に配置する必要があると書かれています。jar をディレクトリに配置しましたが、それでもエラーが発生します。

次に、コマンド ラインでこれを実行します。プロジェクト ディレクトリで mvn tomcat:run を実行しましたが、今回はエラーは発生しませんでした。理由はわかりません。それでも、コマンドラインからではなく、netbeans から実行したいのです。

jar を共有 $CATALINA_HOME/shared/lib に配置したとしても、webapp は、$CATALINA_HOME/shared/lib に配置された jar ではなく、webapp プロジェクトの lib フォルダーに配置された jar に依存していると仮定します。プロジェクト内リポジトリを使用して jar を含めますが、$CATALINA_HOME/shared/lib に配置された jar を含める方法を教えてください。

皆さんからの助けに本当に感謝しています、ありがとう!

4

1 に答える 1