当前位置: 首页 > 知识库问答 >
问题:

无法从部署在tomcat中的jar文件中提取dll文件

皮弘博
2023-03-14

我已经用Waffle开发了一个示例java web应用程序,用于SSO身份验证。我使用Waffle1.8和Tomcat8。我已经在我的开发环境(Java1.8、Tomcat8、Windows2012 R2服务器)中成功地运行并验证了它。但是当我在prod环境(与dev环境相同)中运行相同的应用程序时,它在试图访问URL时会出现以下错误:

SEVERE [http-nio-443-exec-7] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Jersey REST Service] in context with path [/Auth-Test] threw exception [Filter execution threw an exception] with root cause java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/win32-x86-64/jnidispatch.dll) not found in resource path ([file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/classes/, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/asm-3.1.jar, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/guava-18.0.jar, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/jersey-bundle-1.17.1.jar, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/jna-4.2.1.jar, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/jna-platform-4.2.1.jar, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/log4j-1.2.8.jar, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/slf4j-api-1.7.12.jar, file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/Auth-Test/WEB-INF/lib/waffle-jna-1.8.0.jar])at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:866).....

dll文件(com/sun/jna/win32-x86-64/jnidispatch.dll)位于jna-4.2.1.jar中,jna应该将其解压缩到Tomcat8.0/temp文件夹中。在我的开发服务器中,在临时文件夹下创建了一个文件夹,在这个文件夹中创建了几个dll文件。而在prod server中,在temp文件夹中创建一个空文件夹。据我所知,jna无法将dll文件从jar解压缩到外部位置。我还尝试将jna-4.2.1.jar和jna-platform-4.2.1.jar从WEB-INF/lib/移动到tomcat8/lib。还是没有成功。

共有1个答案

章翔宇
2023-03-14

我已经解决了这个问题。问题的根本原因是在将war文件传输到prod服务器时jna jar文件被损坏。我将prod server中的jna jar文件替换为一个新的jar文件副本。

 类似资料:
  • (我不知道这是否相关,但我应该提到,我的DLL依赖于JAR中同一文件夹中的多个其他DLL文件。不确定JNA是否会自动为我提取它们,但到目前为止,JNA似乎甚至没有提取我实际使用的DLL。) 编辑:查找似乎没有问题。根据输出,当设置为时,将在JAR中找到文件并将其解压缩到temp文件夹中。

  • 5.使用cmd重新启动tomcat。 “信息:部署web应用程序目录C:\apache-tomcat-7.0.77\webapps\MyProject Jun 07,2017 4:50:19 PM org.apache.catalina.startup.hostconfig deployDirectory信息:web应用程序目录C:\apache-tomcat-7.0.77\webapps\MyP

  • 问题内容: 这是我尝试将Maven项目部署到tomcat时遇到的错误 错误: 但是WEB-INF \ lib中有javax.servlet-api-3.0.1.jar 问题答案: 信息:validateJarFile(D:\ Softwares \ tomcat \ apache-tomcat-7.0.50 \ webapps \ myWebApp_1 1 \ WEB-INF \ lib \ ja

  • 在Tomcat中手动部署WAR文件 关于如何在internet上的Tomcat中部署war文件,有很多例子,但它只展示了如何在根目录中部署war文件。如果我想让我的应用程序所在的子目录名为“myfolder”,该怎么办。所以我的网址:https://localhost:8080/myfolder/index.html.我需要在webapps中创建一个名为“myfolder”的文件夹,并在那里部署我

  • 我很难弄清楚这个问题,我几乎什么都试过了。 我希望我的程序从Jar文件中读取两个资源,并且它将在eclipse中运行良好。但是当我从命令提示符运行jar时,它会给出空指针异常。 结构: src/main/java/App。JAVA src/main/resources/properties/application。属性 src/main/resources/spring/applicationCo