【发布时间】:2018-06-29 08:56:06
【问题描述】:
我刚刚创建了一个新的 Heroku 帐户,并逐步关注the Heroku Java "Hello, World!" tutorial。将指示的文件复制粘贴到指定目录后,部署工作完全按照描述进行,没有任何问题,除了在本地测试。 JSP 和 servlet 都在活动站点上正常运行。这一切的重点是我不认为代码本身有什么问题。
接下来,我想设置我的本地开发环境,以便我可以将 Eclipse 和 Maven 与部署到 Heroku 的内容一起使用。我通过 Eclipse 运行了 mvn package 并获得了成功的结果。然后我尝试使用.\webapp.bat 在localhost 上运行该应用程序并得到了
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