Failed to scan [file:/home/tomcat/7.0/lib/._annotations-api.jar] from classloader hierarchy 와 같이 ._* 파일에 대하여 오류가 발생하는 경우가 있습니다.
6월 15, 2014 10:21:54 오후 org.apache.catalina.core.AprLifecycleListener init 정보: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/appsroot/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. 6월 15, 2014 10:21:55 오후 org.apache.coyote.AbstractProtocol init 정보: Initializing ProtocolHandler ["http-bio-8080"] 6월 15, 2014 10:21:55 오후 org.apache.coyote.AbstractProtocol init 정보: Initializing ProtocolHandler ["ajp-bio-8009"] 6월 15, 2014 10:21:55 오후 org.apache.catalina.startup.Catalina load 정보: Initialization processed in 935 ms 6월 15, 2014 10:21:55 오후 org.apache.catalina.core.StandardService startInternal 정보: Starting service Catalina 6월 15, 2014 10:21:55 오후 org.apache.catalina.core.StandardEngine startInternal 정보: Starting Servlet Engine: Apache Tomcat/7.0.54 6월 15, 2014 10:21:55 오후 org.apache.catalina.startup.HostConfig deployDirectory 정보: Deploying web application directory /home/tomcat/7.0/servers/jins_8080/webapps/ROOT 6월 15, 2014 10:21:55 오후 org.apache.tomcat.util.scan.StandardJarScanner scan 경고: Failed to scan [file:/home/tomcat/7.0/lib/._annotations-api.jar] from classloader hierarchy java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:215) at java.util.zip.ZipFile.(ZipFile.java:145) at java.util.jar.JarFile.(JarFile.java:153) at java.util.jar.JarFile.(JarFile.java:90) at sun.net.www.protocol.jar.URLJarFile.(URLJarFile.java:93) at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69) at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:99) at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122) at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89) at org.apache.tomcat.util.scan.FileUrlJar.(FileUrlJar.java:41) at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:34) at org.apache.catalina.startup.ContextConfig$FragmentJarScannerCallback.scan(ContextConfig.java:2615) at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:258) at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:220) at org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1871) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1259) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:876) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:374) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1247) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1898) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 6월 15, 2014 10:21:55 오후 org.apache.tomcat.util.scan.StandardJarScanner scan 경고: Failed to scan [file:/home/tomcat/7.0/lib/._catalina-ant.jar] from classloader hierarchy java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.(ZipFile.java:215) at java.util.zip.ZipFile.(ZipFile.java:145) at java.util.jar.JarFile.(JarFile.java:153) ...
이후에 엄청난 메세지들이 계속 나옵니다. 이상하지요? /home/tomcat/7.0/lib 디렉토리에 쓰기 권한 등 특별한 문제도 없는데 말입니다. 파일은 이렇게들 잘 있구요.
appsroot:lib appsroot$ ls -tlra total 17152 drwxrwxrwx@ 1 appsroot staff 131072 5 20 04:33 . drwxrwxrwx 1 appsroot staff 131072 6 15 22:02 .. -rwxrwxrwx 1 appsroot staff 53445 6 15 22:02 catalina-ant.jar -rwxrwxrwx 1 appsroot staff 15978 6 15 22:02 annotations-api.jar -rwxrwxrwx 1 appsroot staff 132895 6 15 22:02 catalina-ha.jar -rwxrwxrwx 1 appsroot staff 256780 6 15 22:02 catalina-tribes.jar -rwxrwxrwx 1 appsroot staff 1594036 6 15 22:02 catalina.jar -rwxrwxrwx 1 appsroot staff 2272697 6 15 22:02 ecj-P20140317-1600.jar -rwxrwxrwx 1 appsroot staff 55426 6 15 22:02 el-api.jar -rwxrwxrwx 1 appsroot staff 124147 6 15 22:02 jasper-el.jar -rwxrwxrwx 1 appsroot staff 602132 6 15 22:02 jasper.jar -rwxrwxrwx 1 appsroot staff 87808 6 15 22:02 jsp-api.jar -rwxrwxrwx 1 appsroot staff 197876 6 15 22:02 servlet-api.jar -rwxrwxrwx 1 appsroot staff 6142 6 15 22:02 tomcat-api.jar -rwxrwxrwx 1 appsroot staff 828251 6 15 22:02 tomcat-coyote.jar -rwxrwxrwx 1 appsroot staff 234042 6 15 22:02 tomcat-dbcp.jar -rwxrwxrwx 1 appsroot staff 71913 6 15 22:02 tomcat-i18n-es.jar -rwxrwxrwx 1 appsroot staff 43799 6 15 22:02 tomcat-i18n-fr.jar -rwxrwxrwx 1 appsroot staff 47037 6 15 22:02 tomcat-i18n-ja.jar -rwxrwxrwx 1 appsroot staff 125457 6 15 22:02 tomcat-jdbc.jar -rwxrwxrwx 1 appsroot staff 29458 6 15 22:02 tomcat-util.jar -rwxrwxrwx 1 appsroot staff 180543 6 15 22:02 tomcat7-websocket.jar -rwxrwxrwx 1 appsroot staff 36155 6 15 22:02 websocket-api.jar
그런데 좀 더 살펴보니 다음과 같은 히든 파일들이 존재하고 있었습니다.
appsroot:lib appsroot$ ls -ltra total 22528 drwxrwxrwx@ 1 appsroot staff 131072 5 20 04:33 . drwxrwxrwx 1 appsroot staff 131072 6 15 22:02 .. -rwxrwxrwx@ 1 appsroot staff 53445 6 15 22:02 catalina-ant.jar -rwxrwxrwx@ 1 appsroot staff 15978 6 15 22:02 annotations-api.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._annotations-api.jar -rwxrwxrwx@ 1 appsroot staff 132895 6 15 22:02 catalina-ha.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._catalina-ant.jar -rwxrwxrwx@ 1 appsroot staff 256780 6 15 22:02 catalina-tribes.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._catalina-ha.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._catalina-tribes.jar -rwxrwxrwx@ 1 appsroot staff 1594036 6 15 22:02 catalina.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._catalina.jar -rwxrwxrwx@ 1 appsroot staff 2272697 6 15 22:02 ecj-P20140317-1600.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._ecj-P20140317-1600.jar -rwxrwxrwx@ 1 appsroot staff 55426 6 15 22:02 el-api.jar -rwxrwxrwx@ 1 appsroot staff 124147 6 15 22:02 jasper-el.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._el-api.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._jasper-el.jar -rwxrwxrwx@ 1 appsroot staff 602132 6 15 22:02 jasper.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._jasper.jar -rwxrwxrwx@ 1 appsroot staff 87808 6 15 22:02 jsp-api.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._jsp-api.jar -rwxrwxrwx@ 1 appsroot staff 197876 6 15 22:02 servlet-api.jar -rwxrwxrwx@ 1 appsroot staff 6142 6 15 22:02 tomcat-api.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._servlet-api.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-api.jar -rwxrwxrwx@ 1 appsroot staff 828251 6 15 22:02 tomcat-coyote.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-coyote.jar -rwxrwxrwx@ 1 appsroot staff 234042 6 15 22:02 tomcat-dbcp.jar -rwxrwxrwx@ 1 appsroot staff 71913 6 15 22:02 tomcat-i18n-es.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-dbcp.jar -rwxrwxrwx@ 1 appsroot staff 43799 6 15 22:02 tomcat-i18n-fr.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-i18n-es.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-i18n-fr.jar -rwxrwxrwx@ 1 appsroot staff 47037 6 15 22:02 tomcat-i18n-ja.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-i18n-ja.jar -rwxrwxrwx@ 1 appsroot staff 125457 6 15 22:02 tomcat-jdbc.jar -rwxrwxrwx@ 1 appsroot staff 29458 6 15 22:02 tomcat-util.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-util.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat-jdbc.jar -rwxrwxrwx@ 1 appsroot staff 180543 6 15 22:02 tomcat7-websocket.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._tomcat7-websocket.jar -rwxrwxrwx@ 1 appsroot staff 36155 6 15 22:02 websocket-api.jar -rwxrwxrwx 1 appsroot staff 4096 6 15 22:02 ._websocket-api.jar
근본 원인을 말씀드리자면 제 테스트 환경이 MacOS 인데, 이 Tomcat 은 MacOS 에 연결된 외부 저장장치에 설치하였고 파일시스템은 ExFAT 이었습니다. 따라서 MacOS 에서 ._* 파일들을 생성해 놓았던 것이지요.
이 파일들에 대해서는 http://support.apple.com/kb/HT1627?viewlocale=en_US&locale=en_US 에서 좀 더 정확한 설명을 확인하실 수 있습니다.
그리고 이 ._* 파일들을 삭제하면 문제가 해결되기는 합니다.