gpt4 book ai didi

tomcat - dll已经使用tomcat加载到netbeans的另一个类加载器中

转载 作者:行者123 更新时间:2023-11-28 23:44:08 32 4
gpt4 key购买 nike

目前,我使用 spring mvc、netbeans 作为 IDE、tomcat 作为 Web 服务器开发了一个 java web 应用程序。

我想使用第 3 方 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 并再次重新打开,它仍然会触发错误。

我用谷歌搜索了答案,它指向了这个链接:

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

但是它说加载 native 库的类应该放在$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?

非常感谢你们的帮助,谢谢!

最佳答案

甚至还有a static-dll-bootstrapper project以正确的方式做每一件事。

只需几个简单的步骤即可解决您的问题。

  • 将jar放到shared.loader路径
  • 在 jar 附近的 dll-bootstrapper.properties 中定义库名
  • Class.forName("msm.DLLBootstrapper"); 放在您的项目代码中
  • 享受

关于tomcat - dll已经使用tomcat加载到netbeans的另一个类加载器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560548/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com