javatomcatdlltomcat5.5

tomcat 5 java.lang.UnsatisfiedLinkError: tomcat\apache-tomcat-5.5.36\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform


I am on a brand new laptop, so it only has stuff I have installed on it in the last week, so i am pretty certain it doesn't have old stuff hanging around.

This is rather large as i have tried to include EVERYTHING.

my java home is pointing to a 64 bit java 8, but because of "stuff" (TM) we are having to run ancient tomcat and java 6 for for our client. I have installed: jdk1.6.0_45 and jdk1.8.0_151 (which is my java_home version)

as you can see above I am using tomcat 5.5.36. And I am making the presumption that as it only has x64 directories it is a 64 bit tomcat. The tcnative.dll in this directory is the one from x64 (the file contents when looked at in 7zip match)

  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

my catalina.bat file has

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

here is the full exception in case you haven't seen it before

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;;.

I have searched my entire C drive and that dll is only in 3 places my C drive


Solution

  • The ZIP file for Tomcat 5.5.36 contains native libraries for IA32, IA64, and x86-64 architectures. The DLL file in Tomcat's bin directory is almost certainly the IA32 one.

    You'll want to rename tcnative-1.dll to something like tcnative-1.dll.ia32 and then copy x64/tcnative-1.dll into bin in place of the one that was there previously.

    Restart Tomcat and you should be up and running.

    Tell the source of "stuff (TM)" that Tomcat 5.5 has long been EOL'd and both it and Java 6 likely have unpatched, publicly-known security vulnerabilities. Don't be the next Equifax.