34

当我尝试运行 tomcat 时出现此错误:

"java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\apache-tomcat-7.0.34\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform".

但是,我下载了 64 位 JRE,并仔细检查了我的 java 版本:

C:\Program Files (x86)\apache-tomcat-7.0.34\bin>java -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

我以前在这里看到过这个问题,但是其中一个没有解决方案,另一个是 Eclipse 问题,但是当我直接访问 tomcat 时出现此错误。

如何找出正在检测的“IA 32 位平台”,以及如何将 Tomcat 指向正确的方向?另外,这可能是我的 servlet 通过 Eclipse 得到这个 404 错误的原因吗?

类型状态报告

消息 /JSPandServlet/控制器

描述 请求的资源不可用。

日志:

C:\Program Files (x86)\apache-tomcat-7.0.34\bin>configtest.bat
Using CATALINA_BASE:   "C:\Program Files (x86)\apache-tomcat-7.0.34"
Using CATALINA_HOME:   "C:\Program Files (x86)\apache-tomcat-7.0.34"
Using CATALINA_TMPDIR: "C:\Program Files (x86)\apache-tomcat-7.0.34\temp"
Using JRE_HOME:        "C:\Program Files (x86)\Java\jre7"
Using CLASSPATH:       "C:\Program Files (x86)\apache-tomcat- 
7.0.34\bin\bootstrap.jar;C:\Program Files (x86)\apache-tomcat- 
7.0.34\bin\tomcat-juli.jar" 
java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\apache-tomcat- 
7.0.34\bin\
tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(Unknown Source)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at org.apache.tomcat.jni.Library.<init>(Library.java:42)
    at org.apache.tomcat.jni.Library.initialize(Library.java:174)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:180)
    at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:85)
    at org.apache.catalina.connector.Connector.setProtocol(Connector.java:595)
    at org.apache.catalina.connector.Connector.<init>(Connector.java:69)
    at org.apache.catalina.startup.ConnectorCreateRule.begin(ConnectorCreateRule.java:62)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:610)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:658)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Dec 26, 2012 7:15:47 PM 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:\Program Files (x86)\Java\jre7\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\PHP\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;c:\Program Files (x86)\Microsoft SQLServer\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;c:\Program Files (x86)\Microsoft SQL Server\10
0\Tools\Binn\VSShell\Common7\IDE\;c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\SourceGear\Common\DiffMerge\;C:\Ruby193\bin;.
Dec 26, 2012 7:15:47 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Dec 26, 2012 7:15:47 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Dec 26, 2012 7:15:47 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 448 ms
4

9 回答 9

26

哦,伙计,我发现了问题。我在一个奇怪的地方有一个旧的 JRE,JRE_HOME 正在访问它。我删除了那个目录,修复了我的环境变量,然后处理了它。

于 2012-12-31T04:12:39.093 回答
9

我刚刚找到了解决方案。问题是我的 JRE_HOME 指向一个 32 位 JRE,而我的机器是 64 位机器。我安装了 64 位 JRE 并在系统变量中替换它,服务器开始干净

于 2013-07-12T13:07:37.263 回答
4

请检查 eclipse 指向的默认版本。属性->Java 编译器。将其切换到您安装的 JRE 版本。这对我有用。谢谢。

于 2015-02-10T10:32:45.333 回答
2

Windows 服务器上的死灵法(2019 年 3 月)。关于堆栈溢出有几个答案,对于“无法在 IA 32 位平台上加载 AMD 64 位 .dll ”的问题。所有这些都只是解决方案的一部分。这里是所有内容。

原因:使用了 32 位版本的 Java,而库需要 64 位版本。

(1) 确保设置了 JAVA_HOME 和 CATALINA_HOME。就像是

设置 JAVA_HOME=C:\Program Files\Java\jre1.8.0_201 设置 CATALINA_HOME=C:\Program Files (x86)\tomcat-9.0.16

这些是 2019 年 3 月的默认位置。真实版本无关紧要,重要的是以下命令应该起作用:

"%java_home%\bin\java.exe" -version
"%catalina_home%\bin\configtest.bat"

第一个命令应该给你几行。其中一条线应该说类似

Java HotSpot(TM) 64-bit Server VM

当然 64 位仅在 64 位 Windows 机器上。(如何检查:windows - run - system information。它应该在系统类型中提到是基于 32 还是 54 的系统)

配置测试显示了 TomCat 使用的 java 和 catalina home 值。

如果您的 Java 版本不正确:

  • 卸载旧 Java 版本:控制面板 - (主页)程序 - 卸载程序
  • 下载Java手册下载页面。(如果链接不再有效,请使用 Google)不要进行自动下载,您可能会获得与您想要的不同的版本,具体取决于您的浏览器。
  • 离线下载64 位 Windows再次不要在线:它会查看您的浏览器来决定您想要 32 位还是 64 位。
  • 运行安装程序。
  • 安装 Java 后,检查您的路径和环境变量并进行相应调整(在 windows server 2012 中:控制面板 - 系统和安全 - 系统 - 更改设置 - 高级 - 环境变量) - 重新打开命令提示符。再次检查路径和环境变量并运行上面的测试。
于 2019-03-18T12:46:55.593 回答
1

请检查 IDE 使用的项目 SDK 版本。

在 Intellij IDEA 中:  文件 -> 项目结构 -> 项目。
在 Eclipse 中:        属性 -> Java 编译器

将其切换到已安装的 JDK x64 版本。

于 2015-03-19T14:53:52.117 回答
0

对于相同的消息“无法在 AMD 64 位平台上加载 IA 32 位 .dll”,同时尝试在 64 位 Windows 机器上运行 Jenkins 从站,通过删除指向 32 的 JAVA_TOOL_OPTIONS 和 _JAVA_OPTIONS 环境变量来修复它位 jvmhook。

于 2013-02-14T22:39:30.423 回答
0

我遇到一些类似消息的问题是我已经通过 swig 在 Linux 机器 (libmyLic.so) 上创建了共享本机库,将其复制到 Windows,并且试图运行我的 java 测试。该测试应该使用 System.loadLibrary 或 System.load 接口。它不起作用,因为 swig 为 UNIX 环境创建了我的共享本机库(将 C++ 代码包装到 java)。当我将所有测试复制到 Linux 时,它解决了问题。

于 2018-11-29T10:28:39.487 回答
0

如果上述答案不起作用,请检查您的路径变量是否指向 Apache Tomcat 安装文件夹的正确(64 位或 32 位)bin 文件夹。这对我有用。

于 2021-05-13T18:29:39.337 回答
0

由于 java 的 32 位和 64 位冲突,才会触发此错误。分析:启动tomcat时查看初始日志。您将了解将是用于 tomcat 的 java。

Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name:   Apache Tomcat/8.5.66
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          May 8 2021 22:44:01 UTC
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version number: 8.5.66.0
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 10
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            10.0
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jdk1.8.0_291\jre
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.8.0_291-b10
Jun 21, 2021 2:44:12 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation

如果发现不正确的架构或不正确的 java 路径,请尝试修复它。如果由于某种原因你遇到困难。尝试重命名不正确的 JDK 目录。它会在某个地方开始给出错误。就我而言,它抱怨我添加到eclipse中的tomcat服务器的java。我必须删除并再次添加 tomcat,以更正它将用于 tomcat 的正确 JDK。这通过问题解决了。

于 2021-06-21T19:19:01.777 回答