Tomcat 在本地运行 Heroku Java 教程时无法启动; "A child container failed during start"且找不到 Web 应用路径



我刚刚创建了一个新的Heroku帐户,并逐步遵循了Heroku Java"Hello,World!"教程。将指示的文件复制粘贴到指定目录后,部署完全按照描述工作,除了在本地端进行测试外,没有任何问题。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:HerokuTutLocalInstancetargetbinsrcmainwebapp
java.io.FileNotFoundException: D:HerokuTutLocalInstancetargetbinsrcmainwebapp (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:HerokuTutLocalInstancetargetbin.srcmainwebapp
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:HerokuTutLocalInstancetargetbin.....srcmainwebapp

(实际路径为D:HerokuTutLocalInstancesrcmainwebapp

据我所知,SO上关于类似外观错误的许多其他帖子有不同的根本原因。为什么会失败?这是雄猫问题,还是只是其他问题的症状?

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

相关内容

最新更新