1

这个错误非常令人费解。在我的 webapps 中,根据推荐,我在 WEB-IF/classes 中有 log4j.properties。

当我从 Eclipse 部署时,我会在 webapp 上停止,取消部署,然后部署。奇怪的是,10 次中有 8 次在 undeploy
-build.xml:526 上收到以下错误:失败 - 无法删除 [C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\punch]。此文件的持续存在可能会导致问题。

我的 webapp 下剩下的唯一文件是 WEB-INF/classes/log4j.properties。其他所有内容都被删除。

我也无法手动删除文件或 webapp 文件夹。我必须停止 Tomcat 服务,删除文件夹,然后重新启动。

有什么解决办法吗?

谢谢。

这是我在 build.xml 中的删除任务

<target name="remove"
 description="Remove application on servlet container">

<stop url="${manager.url}"
     username="${manager.username}"
     password="${manager.password}"
         path="${app.path}"/>

<undeploy url="${manager.url}"
     username="${manager.username}"
     password="${manager.password}"
         path="${app.path}"/>

</target>
4

3 回答 3

0

这是我的工作:

我创建了另一个目标来将战争复制到 Tomcat 的 webapp 目录。

<target name="copywar" depends="dist">
    <copy file="${dist.home}/${app.name}.war" todir="${catalina.home}/webapps" />
</target>

我还确保 Tomcat 可以在 server.xml 中重新部署

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

这工作得很好。谢谢你们的帮助。

于 2013-10-10T21:42:41.147 回答
0

确保在 ServletContextListener 的 contextDestroyed() 方法中调用 LogManager.shutdown()。这应该确保 log4j 没有打开文件。

于 2013-10-10T20:32:56.193 回答
0

那是因为打开文件进行读取。您至少需要关闭您的应用程序。这可以通过PsiProbe轻松完成。

于 2013-10-10T18:20:50.397 回答