java - tomcat 5 java.lang.UnsatisfiedLinkError : tomcat\apache-tomcat-5. 5.36\bin\tcnative-1.dll AMD 64 位平台上的 : Can't load IA 32-bit . dll

标签 java tomcat dll tomcat5.5

我在一台全新的笔记本电脑上,所以它只有我上周安装的东西,所以我很确定它没有旧东西。

这是相当大的,因为我试图包括一切。

我的 java 主页指向 64 位 java 8,但由于“东西”(TM),我们必须为我们的客户端运行古老的 tomcat 和 java 6。 我已经安装了:jdk1.6.0_45 和 jdk1.8.0_151(这是我的 java_home 版本)

正如您在上面看到的,我使用的是 tomcat 5.5.36。我假设它只有 x64 目录,所以它是 64 位 tomcat。该目录下的tcnative.dll是x64的(7zip匹配看文件内容)

  Directory: C:\Users\wendy.gibbons\tomcat\apache-tomcat-5.5.36\bin


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       20/10/2017     11:26                i64
d-----       20/10/2017     11:26                x64
-a----       24/10/2017     10:46           6530 .catalina.bat.un~
-a----       24/10/2017     10:47           1429 .startup.bat.un~
-a----       20/10/2017     11:26          24384 bootstrap.jar
-a----       20/10/2017     11:26           1927 catalina-tasks.xml
-a----       24/10/2017     10:46          10102 catalina.bat
-a----       20/10/2017     11:49          10113 catalina.bat~
-a----       20/10/2017     11:26          13131 catalina.sh
-a----       20/10/2017     11:26         202519 commons-daemon-native.tar.gz
-a----       20/10/2017     11:26          24242 commons-daemon.jar
-a----       20/10/2017     11:26          52313 commons-logging-api-1.1.1.jar
-a----       20/10/2017     11:26           1334 cpappend.bat
-a----       20/10/2017     11:26           2107 digest.bat
-a----       20/10/2017     11:26           1689 digest.sh
-a----       20/10/2017     11:26           2167 jmxaccessor-tasks.xml
-a----       20/10/2017     11:26           5088 service.bat
-a----       20/10/2017     11:26           3000 setclasspath.bat
-a----       20/10/2017     11:26           3577 setclasspath.sh
-a----       20/10/2017     11:26           2099 shutdown.bat
-a----       20/10/2017     11:26           1628 shutdown.sh
-a----       24/10/2017     10:47           2094 startup.bat
-a----       20/10/2017     13:29           2105 startup.bat~
-a----       20/10/2017     11:26           2023 startup.sh
-a----       20/10/2017     11:26        1134080 tcnative-1.dll
-a----       20/10/2017     11:26          13519 tomcat-juli.jar
-a----       20/10/2017     11:26         261742 tomcat-native.tar.gz
-a----       20/10/2017     11:26          77312 tomcat5.exe
-a----       20/10/2017     11:26         103424 tomcat5w.exe
-a----       20/10/2017     11:26           3471 tool-wrapper.bat
-a----       20/10/2017     11:26           3508 tool-wrapper.sh
-a----       20/10/2017     11:26           2104 version.bat
-a----       20/10/2017     11:26           1632 version.sh

我的catalina.bat文件有

set CATALINA_HOME="C:\Users\user\tomcat\apache-tomcat-5.5.36"
set JAVA_HOME="C:\Users\user\jdk1.6.0_45"

这里是完整的异常(exception)情况,以防你之前没有看到它

java.lang.UnsatisfiedLinkError: C:\Users\user\tomcat\apache-tomcat-5.5.36\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1028)
        at org.apache.tomcat.jni.Library.<init>(Library.java:42)
        at org.apache.tomcat.jni.Library.initialize(Library.java:168)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:151)
        at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:76)
        at org.apache.catalina.connector.Connector.setProtocol(Connector.java:638)
        at org.apache.catalina.connector.Connector.<init>(Connector.java:72)
        at org.apache.catalina.startup.ConnectorCreateRule.begin(ConnectorCreateRule.java:44)
        at org.apache.tomcat.util.digester.Rule.begin(Rule.java:153)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
        at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2756)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1562)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:490)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:524)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:267)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
25-Oct-2017 16:56:56 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Users\user\jdk1.6.0_45\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\oraclexe\app\oracle\product\11.2.0\server\bin;;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\Program Files\Git\cmd;C:\Program Files\TortoiseGit\bin;C:\Users\user\apache-maven-3.5.0-bin\apache-maven-3.5.0\bin;;C:\Program Files (x86)\WinMerge;C:\Program Files\PuTTY\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;;.

我搜索了我的整个 C 盘,那个 dll 只在 3 个地方 my C drive

最佳答案

Tomcat 5.5.36 的 ZIP 文件包含 IA32、IA64 和 x86-64 架构的本地库。 Tomcat 的 bin 目录中的 DLL 文件几乎可以肯定是 IA32 文件。

您需要将 tcnative-1.dll 重命名为类似 tcnative-1.dll.ia32 的名称,然后复制 x64/tcnative-1。 dll 放入 bin 以代替之前的那个。

重新启动 Tomcat,您应该已启动并运行。

告诉“stuff (TM)”的消息来源,Tomcat 5.5 早已停产,它和 Java 6 都可能存在未修补的、众所周知的安全漏洞。不要成为下一个 Equifax。

关于java - tomcat 5 java.lang.UnsatisfiedLinkError : tomcat\apache-tomcat-5. 5.36\bin\tcnative-1.dll AMD 64 位平台上的 : Can't load IA 32-bit . dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46937881/

相关文章:

c++ - 使用(和导出)boost::shared_ptr<T> 时出现错误 C2562

java - 如何在获取依赖项的方法之间进行选择?

java - 清除属于我的应用程序的已可见通知

java - 密码学 - Java 1.4 中的 RSA 算法

java - 在java中编辑netbeans添加的组件

java - 如何在 Spring 中执行将导出为 WAR 文件的文件 I/O

tomcat - Apache CXF + Spring Java 配置 + 替换 beans.xml

python - 无法在 python 中导入自定义 DLL

c++ - 我可以将 Visual Studio 2015 头文件编译成 dll 并在 VS2013 中使用吗?

java - Tomcat 7 war 文件部署