1

我在 Linux 上安装了 Tomcat 5,并且部署了一个 web 应用程序并且愉快地运行了很多年。我现在正在尝试部署一个新的 web 应用程序,这场战争是使用 Maven 创建的,对我来说看起来不错,但是 catalna 日志中有一个错误,阻止它正确部署。

它抱怨:

 java.io.IOException: java.io.FileNotFoundException: 
 /home/jthink/jakarta-tomcat-5.0.27/conf/Catalina/localhost/widget.xml
 (Is a directory)

没错,widget.xml一个目录。但我没有创建这个文件,我不知道它来自哪里

我的战争包含以下文件结构:

.:
META-INF
WEB-INF

./META-INF:
context.xml
MANIFEST.MF
maven

./WEB-INF:
classes
lib
web.xml

我看不出有什么奇怪的

这是完整的堆栈跟踪

java.io.IOException: java.io.FileNotFoundException: /home/jthink/jakarta-tomcat-5.0.27/conf/Catalina/localhost/widget.xml (Is a directory)
        at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:494)
        at org.apache.catalina.core.StandardHost.install(StandardHost.java:863)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:482)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1068)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:327)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.java:800)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1619)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1628)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1608)
        at java.lang.Thread.run(Thread.java:619)

解决方法

jakarta-tomcat-5.0.27/conf/Catalina/localhost/widget.xml 应该是 widget.wars META-INF/context.xml 文件的副本,而不是目录。我不知道为什么它被创建为目录但手动删除然后复制 context.xml 并重命名为 widget.xml 解决了这个问题。

向开发人员提出了一个错误https://issues.apache.org/bugzilla/show_bug.cgi?id=53864但由于 tomcat 版本太旧而关闭了 wont-fix。猜猜我应该升级amd看看问题是否消失。

4

1 回答 1

0

没有深入了解,但解决方案是升级到 Tomcat 7,我没有意识到 Tomcat 5 已经过时了。

于 2012-09-21T05:54:46.583 回答