1

我在使用 waffle 和 tomcat 7 启用通过 Windows 身份验证登录时遇到问题。

一切正常,但每次部署应用程序时,都会出现以下错误:

java.lang.UnsatisfiedLinkError: Native Library C:\Program Files    (x86)\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\seedInventory\loader\com\sun\jna\win32-x86\jnidispatch.dll already loaded in another classloader

当我重新启动tomcat时,它又开始工作了。但是,我希望能够在不重新启动的情况下部署应用程序。

我看到这个文件 jnidispatch.dll 即使在取消部署之后仍在使用,我无法手动删除它。

我能做什么?

4

1 回答 1

1

在 Tomcat下使用 JNI 时,请查看有关类加载器问题的 Apache Tomcat HowTo部分。它说:

在 Tomcat 下使用 JNI 需要了解的重要一点是,不能将本机库或它们的 JNI 接口放在 Web 应用程序的 WEB-INF/lib 或 WEB-INF/classes 目录下,并且希望能够重新加载 webapp 而无需重新启动服务器。

因此,您的某些库似乎包含一个本机 jnidispatch.dll 库,您应该将其从 jar 或 war 移到 Tomcat 的 lib 文件夹中,以便重新部署您的应用程序。

于 2015-10-16T14:10:29.157 回答