问题现象:
原本在运行很好的程序,在发布时突然出现了异常:
Mar 13, 2011 9:34:18 AM org.apache.catalina.startup.TldConfig tldScanJar
WARNING: Failed to process JAR [jar:jndi:/localhost/myapp/WEB-INF/lib/jta-1.1.jar!/null] for TLD files
java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.checkAndCreate(File.java:1704)
at java.io.File.createTempFile(File.java:1792)
at java.io.File.createTempFile(File.java:1828)
at sun.net.www.protocol.jar.URLJarFile$1.run(URLJarFile.java:204)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.jar.URLJarFile.retrieve(URLJarFile.java:198)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:50)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:71)
at org.apache.catalina.startup.TldConfig.tldScanJar(TldConfig.java:507)
at org.apache.catalina.startup.TldConfig.access$100(TldConfig.java:59)
at org.apache.catalina.startup.TldConfig$TldJarScannerCallback.scan(TldConfig.java:332)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:234)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:159)
at org.apache.catalina.startup.TldConfig.execute(TldConfig.java:306)
at org.apache.catalina.startup.TldConfig.lifecycleEvent(TldConfig.java:585)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4974)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:925)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1302)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:343)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:323)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1043)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:724)
at org.apache.catalina.startup.Catalina.start(Catalina.java:620)
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.start(Bootstrap.java:304)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
WARNING: Failed to process JAR [jar:jndi:/localhost/myapp/WEB-INF/lib/spring-context-support-3.0.5.RELEASE.jar!/null] for TLD files
at java.io.File.createTempFile(File.java:1792)
由于程序时是一直在开发过程中,每天都有很多更新,很难查出来时什么地方引起了这个问题。和Web开发人员确认,他们也认为没有添加任何新的内容,和开发之初都是一样的。
解决方法:
没有Google到解决方法,就尝试升级了一下,下载安装Tomcat7.0.11。问题解决。
疑惑:
同一版本的程序同时运行在Ubuntu 64服务器(Tomcat7.0.8)、Win7和WinXP开发环境中(Tomcat7.0.8)以及CentOS测试服务器上(Tomcat7.0.8)却偏偏是CentOS上有问题。有些费解。