[Spring] IntelliJ "Can't load AMD 64-bit .dll on a IA 32-bit platform" 에러

2019. 4. 9. 16:52기타/Trouble Shooting

[Spring] IntelliJ "Can't load AMD 64-bit .dll on a IA 32-bit platform" 에러


Error 내용

09-Apr-2019 15:28:14.684 寃쎄퀬 [main] org.apache.catalina.core.AprLifecycleListener.init The APR based Apache Tomcat Native library failed to load. The error reported was [C:\Users\USER\develop\apache-tomcat-8.5.39\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform]
 java.lang.UnsatisfiedLinkError: C:\Users\USER\develop\apache-tomcat-8.5.39\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.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at org.apache.tomcat.jni.Library.<init>(Library.java:42)
    at org.apache.tomcat.jni.Library.initialize(Library.java:178)
    at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:198)
    at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:107)
    at org.apache.catalina.connector.Connector.setProtocol(Connector.java:582)
    at org.apache.catalina.connector.Connector.<init>(Connector.java:74)
    at org.apache.catalina.startup.ConnectorCreateRule.begin(ConnectorCreateRule.java:64)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1250)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
    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:2784)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1518)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:611)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:662)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

IntelliJ에서 Tomcat 설정을 하고 실행을 했을 때 발생한 에러이다.

해결방법

해당 에러는 Tomcat에서 설정된 실행 환경과 실제 실행되는 환경(즉, 32bit와 64bit 환경)이 서로 일치하지 않아서 발생된 에러였다.
Tomcat 자체에는 문제가 없었다. 문제가 발생한 부분은 JDK의 경로였다.
생각해보니까 IntelliJ에서 프로젝트를 생성할 때, SDK 경로(JDK Path)가 Default로 이미 잡혀 있었고 확인도 안한 채 그대로 프로젝트를 생성했었다.
다시 SDK 경로를 확인해보니, "C:\ Program Files (x86) \Java\jdk1.8.0_191"로 되어있었다.

SDK 경로를 develop 폴더에 따로 구성해 놓은 JDK 폴더로 지정하니 해당 에러가 없어졌다.