微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

web应用程序 – .dll已经加载到另一个类加载器中?

我有一个webapp运行在Tomcat 3.2.1下,需要进行JNI调用
以访问传统C代码中的数据和方法。加载了一个servlet

作为其初始化方法的一部分,webapp的启动会导致数据集
具体到要加载到C数据的webapp实例
结构。

此servlet的Java代码包含以下内容

static
{
    try {
        System.loadLibrary("JCoreImpl");
        System.out.println("JCoreImpl loaded");
        m_bLibraryLoaded = true;
    } catch (UnsatisfiedLinkError e) {
        m_bLibraryLoaded = false;
        System.out.println("JCoreImpl NOT loaded " + e);
    }
}

如果只有一个webapp(可以这样称呼),事情就能正常工作
“web应用/ AAA”)。

如果我有一个与webapps / aaa相同的第二个webapp(“webapps / bbb”)
除了在C数据结构中使用的数据集,然后是webapps / aaa
启动很好,但是当webapps / bbb启动时,我收到一个错误
说明
那:

JCoreImpl NOT loaded java.lang.UnsatisfiedLinkError: Native Library
E:\WebStation\binDebug\JCoreImpl.dll already loaded in another classloader

我需要为我的每一个单独的本地库实例
每个实例需要包含唯一的数据的webapps
特定webapp。我已经通过邮件档案搜索并阅读
Craig McLanahan的电子邮件解释了类加载器层次结构。但是我

没有能够找到任何特定于加载一个唯一实例的东西
每个webapp的本地库。

解决方法

您无法加载相同的本机库两次。

将类放在jar文件/ lib /下,它将在所有的战争中共享。

原文地址:https://www.jb51.cc/html/233450.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐