目前我使用spring mvc,netbeans作为IDE,tomcat作为web服务器开发了一个java web应用程序。
我想使用 3rd 方 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);
代码的第二行将导致错误。
第一次执行代码时,它没有触发错误,但之后,它总是触发错误。我试图从netbeans中停止tomcat,关闭netbeans并再次重新打开,它仍然会触发错误。
我搜索了答案,它指向了这个链接:
但是它说加载本机库的类应该放在 $CATALINA_HOME/shared/lib 中。我将 jar 放到目录中,但仍然出现错误。
然后我在命令行中运行: mvn tomcat:run 在我的项目目录上,这次没有发生错误,我不知道为什么。但是,我仍然想从 netbeans 运行它,而不是从命令行。
我假设即使我已将 jar 放在共享 $CATALINA_HOME/shared/lib 中,我的 webapp 仍然依赖于放置在我的 webapp 项目的 lib 文件夹中的 jar,而不是放置在 $CATALINA_HOME/shared/lib 中的 jar。我使用项目内存储库来包含 jar,但是如何包含放置在 $CATALINA_HOME/shared/lib 中的 jar?
我真的很感谢你们的帮助,谢谢!