【问题标题】:Tomcat not starting when running Heroku Java tutorial locally; "A child container failed during start" and cannot find webapp path在本地运行 Heroku Java 教程时 Tomcat 未启动; “子容器在启动期间失败”并且找不到 webapp 路径
【发布时间】:2018-06-29 08:56:06
【问题描述】:

我刚刚创建了一个新的 Heroku 帐户,并逐步关注the Heroku Java "Hello, World!" tutorial。将指示的文件复制粘贴到指定目录后,部署工作完全按照描述进行,没有任何问题,除了在本地测试。 JSP 和 servlet 都在活动站点上正常运行。这一切的重点是我不认为代码本身有什么问题。

接下来,我想设置我的本地开发环境,以便我可以将 Eclipse 和 Maven 与部署到 Heroku 的内容一起使用。我通过 Eclipse 运行了 mvn package 并获得了成功的结果。然后我尝试使用.\webapp.batlocalhost 上运行该应用程序并得到了

Jan 18, 2018 9:27:43 PM org.apache.catalina.core.StandardContext setPath
WARNING: A context path must either be an empty string or start with a '/' and do not end with a '/'. The path [/] does not meet these criteria and has been changed to []
Jan 18, 2018 9:27:43 PM org.apache.catalina.startup.Tomcat getWebappConfigFileFromJar
WARNING: Unable to determine web application context.xml D:\HerokuTutLocalInstance\target\bin\src\main\webapp
java.io.FileNotFoundException: D:\HerokuTutLocalInstance\target\bin\src\main\webapp (The system cannot find the path specified)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(Unknown Source)
        at java.util.zip.ZipFile.<init>(Unknown Source)
        at java.util.jar.JarFile.<init>(Unknown Source)
        at java.util.jar.JarFile.<init>(Unknown Source)
        at org.apache.catalina.startup.Tomcat.getWebappConfigFileFromJar(Tomcat.java:1274)
        at org.apache.catalina.startup.Tomcat.getWebappConfigFile(Tomcat.java:1254)
        at org.apache.catalina.startup.Tomcat.addWebapp(Tomcat.java:644)
        at org.apache.catalina.startup.Tomcat.addWebapp(Tomcat.java:605)
        at org.apache.catalina.startup.Tomcat.addWebapp(Tomcat.java:218)
        at launch.Main.main(Main.java:27)

configuring app with basedir: D:\HerokuTutLocalInstance\target\bin\.\src\main\webapp
Jan 18, 2018 9:27:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Jan 18, 2018 9:27:43 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Jan 18, 2018 9:27:43 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
Jan 18, 2018 9:27:43 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.5.23
Jan 18, 2018 9:27:43 PM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
        at java.util.concurrent.FutureTask.report(Unknown Source)
        at java.util.concurrent.FutureTask.get(Unknown Source)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        ... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.StandardRoot@3e7e7728]
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:113)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4860)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4995)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
[numerous similar errors snipped for length]

我认为问题可能与 Tomcat 在错误位置寻找 src/main/webapp 的事实有关。将代码更改为

String webappDirLocation = "../../src/main/webapp/";

没有帮助;错误的路径部分只是更改为

configuring app with basedir: D:\HerokuTutLocalInstance\target\bin\.\..\..\src\main\webapp

(实际路径为D:\HerokuTutLocalInstance\src\main\webapp。)

据我所知,SO 上关于类似错误的许多其他帖子都有不同的根本原因。为什么会失败?是 Tomcat 问题,还是只是其他问题的征兆?

【问题讨论】:

    标签: java eclipse maven tomcat heroku


    【解决方案1】:

    您是否尝试过从 D:\HerokuTutLocalInstance 目录运行脚本并且没有更改代码,我的意思是使用 .\target\bin\webapp.bat

    【讨论】:

    • 是的,这是我在更改代码之前尝试的第一件事。这是首先创建错误输出的原因。抱歉,如果不清楚。实际上我刚才通过采用完全不同的方法解决了这个问题,所以我不知道发生了什么,但我也不再需要这个特定问题的答案了。
    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2012-05-09
    • 2018-08-05
    • 2012-11-18
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多