天天看点

CentOS 上Tomcat7.0.8的tldScanJar错误

问题现象:

原本在运行很好的程序,在发布时突然出现了异常:

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上有问题。有些费解。