部署WAR文件在Tomcat上给我一个404状态代码?

问题描述 投票:21回答:9

我对Tomcat很新。我只是设法构建一个项目并将其导出为WAR文件。我尝试手动将WAR文件复制到Tomcat文件夹,然后重新启动。它创建了文件夹结构和所有内容,但是当我尝试访问应用程序时,我获得了404状态代码。我尝试通过Tomcat管理面板部署它,但我看到了相同的行为。我做了什么从根本上错了吗?

java tomcat deployment
9个回答
10
投票

假设您拥有Tomcat安装的完全权限,请尝试访问http://localhost:8080/manager/html/,如果您不知道进入该区域的密码,请在tomcat-users.xml目录中查找${tomcat-installation}/conf文件,并且应该拥有它。如果它中没有条目,那么您将需要添加如下条目:

<user username="username" password="password" roles="admin,manager" />

查看您的应用程序是否显示在该屏幕中,如果是,请单击该链接,看看是否可以将您带到任何地方。如果没有,那么我建议遵循ifishers的建议,并查看日志文件以查看它是否列出了任何错误。

但长话短说,很可能是你的项目的web.xml搞砸了


4
投票

我也有同样的问题。我的问题是我的应用程序名称和war文件名不同。我已将war文件名更改为我的应用程序名称。

在这里,当您的应用程序部署时,tomcat会自动提取具有相同名称的war文件。在我的情况下,我的服务名称是my-web-service(iehttps://localhost:8080/my-web-service/),我的war文件名是MY-java-connector-0.0.1-SNAPSHOT.war(这是我的项目文件夹名称)。现在tomcat正在寻找my-web = service文件夹,它找到了epicor-java-connector-0.0.1-SNAPSHOT文件夹。所以将文件夹重命名为my-web = service.war,它正在运行。


3
投票

我最好的猜测是你没有在web.xml中配置欢迎文件。如果你去/ app /你需要一些默认文件。通常,人们要么创建了index.html,要么使用欢迎文件设置将用户指向正确的jsp。


3
投票

我有同样的问题,我的问题是我通过sftp将文件直接复制到tomcat的webapps目录中,这可能导致轮询问题导致它无法正确部署。 Tomcat监视webapps目录,当它看到.xml它会破解并做它的事情,问题是可能还没有复制过所有内容。 :(

最好创建一个临时文件夹,将war移动或复制到该文件夹​​,然后使用linux mv命令将其移动到webapps中 - mv是原子级的,因此tomcat在操作完成之前不会执行任何操作。

魔法。

信用转到了我在javarance上发现的一个非常随机的帖子,后者又导致:http://pub.admc.com/howtos/tomcat/ch02.html#stagedir-section

希望这有助于别人:)


2
投票

在最近的时间,如果JAVA_HOME指向Java的早期版本而不是WAR中的代码,则可能会出现这种情况。在Tomcat的BIN目录中运行startup.bat之后,Tomcat可能会使用JAVA_HOME来确定它显示的JRE_HOME。虽然Tomcat可能对它获得的Java版本很满意,但对于应用程序而言,这可能还不够。在我的例子中,Tomcat 8.0.49在JDK1.7上正常运行,而应用程序根本没有初始化(是的,它是一个Spring Boot应用程序,WAR正在解压缩,但就是全部) - 没有给出任何错误。将JAVA_HOME设置为JDK1.8的位置后,问题就解决了。


1
投票

我也遇到了这个问题。

我简单的回旋解决方案是改变docBase路径。

出现问题时

docBase=".../tomcat/webapps/app_name.war";

问题解决了

docBase=".../tomcat/webapps/app_foldername/web"

0
投票

我遇到了与tomcat相同的问题,并通过强制我的IDE创建web.xml文件来修复它。我失踪了。它会部署项目,但我仍然会得到404错误。我阅读了其中几篇教程,但无济于事。我在某处读到了需要正确配置web.xml文件的地方。在WEB-INF文件夹中找到web.xml,没有文件夹,也没有web.xml文件。我做了一个快速谷歌如何使用我的IDE创建,然后使用web.xml输出编译我的程序,它解决了我的问题。希望有所帮助。干杯!


0
投票

FWIW我遇到了这个问题并通过发现我正在访问错误的主机来解决这个问题,比如“http://wronghost:8080/why_is_this_war_not_there”所以如果它在catalina.out / localhost中说“XX.war成功部署”。*。这可能是对粉丝的暗示。


-1
投票

你试过了吗

localhost:8080/app

假设你的war文件是app.war?

编辑评论 - 然后你的web.xml搞砸了。

© www.soinside.com 2019 - 2024. All rights reserved.