【问题标题】:FAIL - Deployed application at context path / but context failed to startFAIL - 在上下文路径部署应用程序/但上下文无法启动
【发布时间】:2015-04-01 14:46:03
【问题描述】:

我在 2 个独立的 web 应用程序中工作,一个后端应用程序和一个前端应用程序。 有趣的是,当我运行后端时,我没有任何问题。但在前端我收到以下错误:

I have the following error in Netbeans 

NetBeans: Deploying on Apache Tomcat or TomEE
    profile mode: false
    debug mode: false
    force redeploy: true
Undeploying ...
undeploy?path=/
OK - Undeployed application at context path /
In-place deployment at D:\WebDevel\WebStore\WebFrontE\target\Web-1.0-SNAPSHOT
Deployment is in progress...
deploy?config=file%3A%2FC%3A%2FUsers%7E1%2FAppData%2FLocal%2FTemp%2Fcontext7815575477480252472.xml&path=/
FAIL - Deployed application at context path / but context failed to start

两者都在同一个 Tomcat 上运行。我的同事有相同的代码,它工作正常:-s

【问题讨论】:

  • 你使用的是什么版本的Tomcat?你在使用战争覆盖吗?
  • 这个问题解决了吗?因为经过一段时间的开发,我得到了这个错误。仍然不知道它的根本原因。

标签: java tomcat web-applications


【解决方案1】:

Context Path(或)Context Root 对于部署在服务器上的每个应用程序必须是唯一的。

因此,您不能将具有相同上下文根的两个应用程序部署到同一台服务器。您的两个应用程序的上下文路径似乎都是/

检查server.xml 以查看它们都有什么上下文路径。如果它们不是唯一的,则更改它们以解决问题。

但如果您希望两个应用程序使用相同的上下文根,则需要将它们部署在两个不同的服务器中。

更多信息: Tomcat Context paths configuration

【讨论】:

  • 你能否再澄清一下我在netbeans中面临同样的问题,我在netbeans 8.2中添加了Struts 2插件并使用相同的方法创建了一个项目,但是当我尝试运行项目时,它似乎是模块尚未部署。有关详细信息,请参阅服务器日志。构建失败(总时间:2 秒)
【解决方案2】:

我可能有点晚了,但我会说这可能是因为 Tomcat 8 中的工厂名称发生了变化。所以请按照以下步骤操作:

1) 首先,看看你使用的是 Tomcat 8 还是更高版本。

2) 如果是,则 tomcat 无法部署您的应用程序。在调试模式下运行应用程序并在 Tomcat 窗口中查看堆栈跟踪(在底部。与 Tomcat.log 不同)。向下滚动窗口,看看你是否能找到这样的异常:
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory em>

3) 如果您看到类似上面的内容,请打开您的 META-INF/context.xml 并将资源标签中的工厂属性替换或添加为: factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"

4) 重启 tomcat 并重新部署。

【讨论】:

    【解决方案3】:

    在尝试从 jenkins 将 Spring Boot Web 应用程序部署到外部 VM 时,我遇到了与以下相同的错误。 在我查看 tomcat 日志后,我发现它是 java 版本错误。我没有安装我的 Spring Boot 应用程序支持的正确 Java 版本。 我安装了openjdk 8并从vm中删除了java7,它得到了解决。

    以下错误背后的实际原因可能有很多。所以检查你的 tomcat /logs/catalina.out 目录是否有确切的错误。在 Jenkins 构建日志中,它没有给出实际错误。

    失败 - 在上下文路径 [/webapp] 但上下文中部署应用程序

    https://www.youtube.com/watch?v=1jsKGhXmm4c

    【讨论】:

      【解决方案4】:

      在很多链接不起作用后,我遇到了这个问题,找到了这个解决方案。编辑 Tomee 服务器上的 server.xml,为 appBase 提供完全限定的路径:

      <Host name="localhost"  appBase="C:\apache\apache-tomee-7.0.2-plume\webapps"
                        unpackWARs="true" autoDeploy="true">
      

      【讨论】:

        【解决方案5】:

        如果您的上下文没有很好地启动,则会发生以下错误。 实例:您有调用方法的上下文侦听器,但该方法不存在。

        【讨论】:

          【解决方案6】:

          我的问题是 web.xml 中的语法错误,我没有关闭元素

          tomcat 窗口(NetBeans)有一个明确的错误信息,感谢 Arafat

          01-Sep-2018 17:34:38.641 SEVERE [http-nio-8080-exec-5] org.apache.tomcat.util.digester.Digester.fatalError 在第 50 行第 11 列解析致命错误:元素类型"param-value" 必须以匹配的结束标签 "" 结束。

          【讨论】:

            【解决方案7】:

            我也无法在我的 netbeans 上解决此类问题。我整天都在忙着摆脱这个问题。已经尝试了许多解决方案,但在我尝试删除项目的“目标”文件夹并解决问题之前,仍然没有任何反应!希望能帮助到你! :)

            【讨论】:

              【解决方案8】:

              我已经多次遇到这个问题,我尝试了以下步骤并且成功了..!

              1. 备份您当前的项目(为了安全)。

              2. 找到您的项目文件夹位置(通常位于名为 NetBeansProjectsMyDocumentsDocuments 文件夹中) .

              3.打开项目文件夹并删除项目文件夹中名为target的文件夹

              4. 关闭 NetBeans 并重新打开它并运行项目。

              你可以走了。

              如果上述方法不起作用,请尝试从文件夹“Tomcat 9.0\conf\Catalina\localhost”文件夹中删除 xml 文件

              【讨论】:

                【解决方案9】:

                由于语法错误,我在使用 Java Web 时遇到此错误:

                我的 Servlet 代码应该是这样的:

                @WebServlet(name = "EleicaoServlet", urlPatterns = {"/EleicaoServlet", "/main", "/insert", "/edit", "/delete", "/update"})
                

                但我忘记在“/update”中输入“/”

                @WebServlet(name = "EleicaoServlet", urlPatterns = {"/EleicaoServlet", "/main", "/insert", "/edit", "/delete", "update"})
                

                我得到了这个错误。

                因此,如果以上都不起作用,您可能需要检查您的代码,这可能是一些愚蠢的事情。

                【讨论】:

                  【解决方案10】:

                  '在上下文路径未部署的应用程序'这个错误是由于在将项目从一个系统复制到另一个系统时丢失了一些文件而发生的。 在应对时确保应复制所有文件。如果发生错误,请重新复制项目并导入它.. 它可能会起作用..

                  【讨论】:

                  • 我遇到了这个问题。我上传了项目,但构建速度很慢,还没有完成。这弄乱了 Tomcat,因为下次正确复制文件后,我仍然无法部署 web 应用程序(但 web 应用程序未在管理器 GUI 中列出)。我可能需要重新启动 Tomcat。
                  【解决方案11】:

                  我刚刚通过在根文件夹中向用户授予 Apache Server Foundation 的安全权限解决了同样的问题

                  【讨论】:

                    【解决方案12】:

                    在我的例子中,我删除了一些我在 web.xml 中添加的配置标签,试图配置一个 strut 包。我也分别删除了那个包,我重新启动了服务器,运行了项目并且它工作了。

                    【讨论】:

                      【解决方案13】:

                      曾经遇到过同样的问题。在其中一个实例中,它是由具有多个具有相同路由的方法的控制器引起的,例如

                      @RestController
                      public class UsersController
                      {   
                          @Autowired
                          UsersInterface userInterface;
                      
                          @RequestMapping(value = "/get", method = RequestMethod.GET)
                          public String test()
                          {
                              return "Users";
                          }
                      
                          @RequestMapping(value = "/get", method = RequestMethod.GET)
                          public List<user> getUsers()
                          {
                              List<User> users = userInterface.getUsers();
                              return users;
                          }
                      }
                      

                      如您所见,控制器有 2 个方法定义了两个 get 路由,因此 Spring 无法解析该方法来运行 .../users/get 路由。

                      远程get 路由之一并将其更改为其他内容。

                      我可能会迟到回答,但将来可能会帮助其他人。

                      【讨论】:

                        【解决方案14】:

                        这可能有很多原因,但就我个人而言,最常见的是 web.xml 文件 servlet 声明。当我在 Mac 和 Linux 上交叉开发一个项目时,我发现由于一些空间或换行问题,文件在两个平台上的行为不同。由于 servlet 数量超过 20 个,我花了几个小时才发现。最终我奇怪地缩小到只有一个控制器类声明,发现语法绝对完美。它让我感到困惑,所以我想在删除旧的声明和 BAM 后重写声明!它立即在 Mac 上运行。奇怪。

                        【讨论】:

                          【解决方案15】:

                          我正面临这个问题,在尝试了其他几个建议之后,以下事情对我来说非常有效。

                          删除以下文件:

                          /apache-tomcat-9.0.13/conf/Catalina/localhost/*.xml
                          

                          【讨论】:

                          • 对我来说是空的,也没有.xml 文件。
                          【解决方案16】:

                          这有点晚了,但对于任何可能面临同样错误的人来说。

                          对我来说,这个错误是由我的 servlet 中的错误语法引起的。

                          @WebServlet(urlPatterns = {"/x/login", "/x/register", "/x/logout", "x/createrestaurant"})
                          

                          看起来像上面的,我得到了同样的错误。经过一段时间并尝试在不同的服务器上部署(从 Tomcat 到 Glassfish),Glassfish 给了我更好的日志,我意识到语法应该是这样的

                          @WebServlet(urlPatterns = {"/x/login", "/x/register", "/x/logout", "/x/createrestaurant"}).
                          

                          注意 x/createrestaurant 之前的 /

                          【讨论】:

                            【解决方案17】:

                            我遇到了同样的问题,但我只使用了 maven(没有 IDE)。我的tomcat版本是tomcat7 7.0.70-1和jdk8(在pom.xml:&lt;java.version&gt;1.8&lt;/java.version&gt;)原来tomcat7incompatible用java 8,所以,我在pom.xml上更改了java.version&lt;java.version&gt;1.7&lt;/java.version&gt;和这就是解决方案!

                            【讨论】:

                              【解决方案18】:

                              我遇到了同样的问题,我通过从 IDE 停止 tomcat 并运行 Web 应用程序解决了这个问题,它会自动启动 tomcat。(这在 Netbeans IDE 中有效)。只需停止 Tomcat 并重新启动并重新部署 Web 应用程序。

                              【讨论】:

                                猜你喜欢
                                • 2015-01-26
                                • 2020-02-29
                                • 2015-01-03
                                • 2017-05-18
                                • 2014-08-12
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多