java - 无法创建文件 [META-INF/war-tracker] Tomcat 9 linux
问题描述
Tomcat日志:
java.io.IOException: Unable to create the file [/usr/local/tomcat/webapps/mywebapp/META-INF/war-tracker]
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:180)
at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:609)
at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:742)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:182)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:972)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:695)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
突然服务器不工作了,没有解压webapps中的WAR文件,不能处理API请求,
上下文文件:
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
我试图从 TOMCAT 页面上的经理部署,但再次失败。
在日志中查找: 无法创建文件 [/usr/local/tomcat/webapps/mywebapp/META-INF/war-tracker] 我寻找解决方案但没有找到,有人遇到过他吗?
Tomcat:apache-tomcat-9.0.13 openjdk 版本“1.8.0_171”
解决方案
问题是部署战争中的文件“META-INF/war-tracker”:
来自 Tomcat 文档:
注意:如果 Tomcat 扩展了 WAR 文件,那么它会在解压后的目录结构中添加一个文件(/META-INF/war-tracking),用于在 Tomcat 未运行时检测 WAR 文件的变化。任何此类更改都会在 Tomcat 下次启动时触发扩展目录的删除和更新的 WAR 文件的部署。
看来您手动打包了战争文件并包含了 META-INF/war-tracker。在部署期间,Tomcat(从版本 8 起 AFAIK)尝试创建所述文件以检测更改。但是,如果存在这样的文件,Tomcat 将无法创建该文件,并且会抛出您上面提到的异常。
解决方案:
在部署之前从您的战争文件中删除文件“META-INF/war-tracker”,一切就绪。
推荐阅读
- javascript - 如何等待回调
- java - java.lang.VerifyError:在分支目标 32 处期望堆栈图帧
- python - Jupyter Python 上的 MiniZinc
- python - 在python中删除文本文件中的空格
- sql - Sql Server 全局阻止列表和项目特定允许列表
- python - 用 3 个向量绘制轮廓
- php - SQLSTATE[HY000] [2002] 连接被拒绝 Laravel 8
- activecollab - 在 Active Collab 上重新打开已完成的项目
- c# - ASP.NET C# 将链接按钮添加到列表
- python - 使用数据帧中的关键字来检测另一个数据帧或字符串中是否存在任何关键字