現在、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 を閉じてから再度開いてみましたが、それでもエラーが発生します。
私は答えをグーグルで検索しましたが、それは私にこのリンクを示しています:
しかし、ネイティブ ライブラリをロードするクラスは $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 を含める方法を教えてください。
皆さんからの助けに本当に感謝しています、ありがとう!