【发布时间】:2013-05-15 08:45:14
【问题描述】:
目前我使用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?
非常感谢你们的帮助, 谢谢!
【问题讨论】:
-
你找到解决办法了吗?在你的 maven 依赖中使用
provided 怎么样? -
你使用的是 Tomcat 7 吗?
-
我用的是Tomcat 7,还是没有找到解决办法。
标签: tomcat spring-mvc netbeans classloader unsatisfiedlinkerror