Can't load IA 32-bit .dll on a AMD 64-bit platform

我心飞扬 2012-04-29 02:15:52
在myeclipse中使用的,tomcat异常:
java.lang.UnsatisfiedLinkError: D:\JAVA\ApacheTomcat\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:1778)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
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(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:179)
at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:84)
at org.apache.catalina.connector.Connector.setProtocol(Connector.java:577)
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(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:1339)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
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:107)
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:1537)
at org.apache.catalina.startup.Catalina.load(Catalina.java:601)
at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
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:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)
...全文
112126 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 24 楼 zzd1989812 的回复:
这个很正常,不管是32还是64位JDK下的include/win32下的jni_md.h生成的DLL文件只能在32位操作系统下运行,JNI调用报的错想必应该很清楚了吧
我操 这么说64位的编译出来的32位Dll根本用不了啊 那JNI不是鸡肋了啊 遇到这个问题了
qq_22019049 2014-11-07
  • 打赏
  • 举报
回复
楼主,没有上面的复杂,一种直接的方法:用tomcat下自带的jdk,这种问题就解决了撒,多简单
  • 打赏
  • 举报
回复
32位jdk对应32位的tomcat 项目含有自己的32位*.dll文件 应该这样配置。 我也折腾了好久才明白,jdk可以装两个,用哪个就配置哪个jdk就好了 所以用JAVA_HOME配置比较方便
周正德 2014-09-03
  • 打赏
  • 举报
回复
指定JAVA_HOME为32位的JDK,这样就可以使用了,JNI真蛋痛
周正德 2014-09-03
  • 打赏
  • 举报
回复
这个很正常,不管是32还是64位JDK下的include/win32下的jni_md.h生成的DLL文件只能在32位操作系统下运行,JNI调用报的错想必应该很清楚了吧
NicolasPeter 2014-07-31
  • 打赏
  • 举报
回复
就没人能好好的说一下解决的答案吗
静悄悄地生活 2014-06-06
  • 打赏
  • 举报
回复
我的是这样: java.lang.UnsatisfiedLinkError: F:\WTK2.5.2_01\bin\sublime.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
静悄悄地生活 2014-06-06
  • 打赏
  • 举报
回复
下了个32位的 jre,安装了不行,是不是要设置路径?
微wx笑 2014-05-24
  • 打赏
  • 举报
回复
http://jingyan.baidu.com/article/9c69d48f457e6f13c9024eea.html 看看这个能帮助你解决问题么
微wx笑 2014-05-24
  • 打赏
  • 举报
回复
我也遇到类似的问题了
huibinli 2014-03-23
  • 打赏
  • 举报
回复
愚蠢的人类,用%tomcat%\bin\x64下的文件对应替换%tomcat%\bin下的文件。
小龙1002 2014-03-22
  • 打赏
  • 举报
回复
我也遇到了这个问题,谢谢名位的答案
menglanxiang 2014-03-21
  • 打赏
  • 举报
回复
终于找到楼主了
RisonGao 2014-03-21
  • 打赏
  • 举报
回复
解决了吗亲?
jackson_fighting 2014-01-09
  • 打赏
  • 举报
回复
引用 13 楼 a284600326 的回复:
tcnative-1.dll,你用的是tcnative调用了windows的api。但是tcnative用的是32位的,而系统是64位的。下载一个64位的tcnative1.dll
++
a284600326 2014-01-09
  • 打赏
  • 举报
回复 2
tcnative-1.dll,你用的是tcnative调用了windows的api。但是tcnative用的是32位的,而系统是64位的。下载一个64位的tcnative1.dll
安特矮油 2013-10-12
  • 打赏
  • 举报
回复
换个64位的环境 其实这个错不会影响程序运行的
tigerhanone 2013-10-12
  • 打赏
  • 举报
回复
兄弟,64位也分几种,我们一般用的服务器CPU都是AMD64的,也就是所谓的X64架构,而英特尔还针对高端机器发布了IA64架构的cpu,故针对不同架构的cpu所发布的软件自然无法兼容,甚至无法运行。 --- 错误信息已经提示的很清楚了, 到网上去下载对应CPU架构的发行版试试吧。 祝好运
  • 打赏
  • 举报
回复 1
替换 \bin 目录下的tcnative-1.dll 为64位的版本 http://files.cnblogs.com/inteliot/tcnative-1.rar
sky蓝色 2012-12-19
  • 打赏
  • 举报
回复
你的DLL应该编译成64位的,如过用的mingw ,可以用mingw64.也可以用tdm-gcc有64位的编译后的可用。
加载更多回复(8)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧