Java 启动/catalina脚本中tomcat爆发战争和手动爆发战争之间的区别?
我已将.war复制到本地tomcat服务器的webapps文件夹中。当我启动tomcat时,.war会被分解成一种不同于我用jar-xf手动分解它时的结构。当我手动分解.war时,我将WEB-INF文件夹作为app文件夹的子文件夹(如下所示)。这就是我想要的 两个启动都很好,但当tomcat引爆我的战争时,发送资源请求总是返回404。我认为WEB-INF应该是分解的war目录的子目录,请求返回200。在webapps中手动分解.war,然后运行tomcat,并在tomcat自动分解war后停止它,将WEB-INF向上移动一级,然后重新启动tomcat也可以工作 有没有一种方法可以打包我的war,以便tomcat将WEB-INF作为分解的war目录的直接子目录来分解它?为什么tomcat的战争爆发方式与jar-xf有所不同 雄猫Java 启动/catalina脚本中tomcat爆发战争和手动爆发战争之间的区别?,java,tomcat,war,executable-jar,web-inf,Java,Tomcat,War,Executable Jar,Web Inf,我已将.war复制到本地tomcat服务器的webapps文件夹中。当我启动tomcat时,.war会被分解成一种不同于我用jar-xf手动分解它时的结构。当我手动分解.war时,我将WEB-INF文件夹作为app文件夹的子文件夹(如下所示)。这就是我想要的 两个启动都很好,但当tomcat引爆我的战争时,发送资源请求总是返回404。我认为WEB-INF应该是分解的war目录的子目录,请求返回200。在webapps中手动分解.war,然后运行tomcat,并在tomcat自动分解war后停止它
exploded_war
├── app_name
│ └── WEB-INF
│ ├── classes
│ │ └── ...
│ ├── servlet.xml
│ ├── lib
│ │ ├── ...
│ └── web.xml
└── META-INF
└── ...
手册
exploded_war
└── WEB-INF
├── classes
│ └── ...
├── servlet.xml
├── lib
│ ├── ...
└── web.xml
编辑-这是在项目文件夹中执行的生成脚本-
mvn package
cp src/WEB-INF/*.xml /target/app_name/WEB-INF
cd target
jar -cvf app_name.war app_name/WEB-INF
cp app_name.war {path_to}/apache-tomcat-8.5.13/webapps
您的WAR文件结构不正确。WAR文件的根目录下不得包含应用程序名称文件夹。 您需要从jar命令中删除app_name文件夹 mvn package cp src/WEB-INF/*.xml /target/app_name/WEB-INF cd target/app_name jar -cvf ../app_name.war WEB-INF cd .. cp app_name.war {path_to}/apache-tomcat-8.5.13/webapps 打包 cp src/WEB-INF/*.xml/target/app_name/WEB-INF cd目标/应用程序名称 jar-cvf../app_name.war WEB-INF 光盘 cp app_name.war{path_to}/apache-tomcat-8.5.13/webapps 例如,请参见以下屏幕截图:
您是如何生成WAR文件的?手动?使用IDE?使用Ant?之类的脚本和使用maven的构建脚本。我把它添加到我原来的博文中就这样!谢谢我没有意识到jar会使用“jar-cvf”命令保留目录结构。你知道为什么jar-xf会返回所需级别的WEB-INF吗?