在Amazon AWS上启动Spring Boot应用程序,如何设置Targeted Runtime

时间:2015-01-07 15:21:22

标签: java eclipse spring tomcat spring-boot

我转换了我的项目,就像在this question

的已接受答案中进行了精确调整一样

在部署.war软件包(使用Maven构建)之后,我无法启动应用程序,我查看了日志,并在以下部分中隔离了:

Jan 07, 2015 12:12:05 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1247)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1898)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
    at org.apache.tomcat.websocket.server.WsServerContainer.<init>(WsServerContainer.java:147)
    at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
    at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5479)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 10 more

Jan 07, 2015 12:12:05 PM org.apache.catalina.startup.HostConfig deployDirectory
SEVERE: Error deploying web application directory /var/lib/tomcat7/webapps/ROOT
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1247)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1898)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

以下错误似乎至关重要:

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;

我推断我应该使用Eclipse IDE添加目标环境(因为我听说不建议手动添加jar和编辑文件)。

我的亚马逊AWS实例是Tomcat 7 Java 7 64位,因此我在本地计算机上创建了一个带有Java 1.7的Tomcat 7服务器,但不幸的是它无法选择。

All environments are not sellectable

它说我应该卸载一些方面,但正如您在下面的屏幕截图中看到的那样,似乎没有什么东西适合卸载以使其与Tomcat 7兼容。

Facets

1 个答案:

答案 0 :(得分:0)

我终于开始工作了。解决方案如下。

首先,我们需要在所需的服务器上配置我们的项目。

right click on the project -> profile as -> profile on server

现在选择您选择的服务器,如果它不可用,您将不得不安装它(这非常简单,您下载tar.gz存档,解压缩并在向导中选择此目录)。

就像我在我的问题中尝试过一样,选择此服务器作为Target Runtime,这一次应该出现。

right click on the project -> Properties -> Targeted Runtimes -> select your server -> apply

this time server appears

在这些步骤之后,我再次构建了我的war包,使用ElasticBeanstalk在AWS上部署它并成功运行应用程序。