有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java WAR无法在AWS中的jetty9上启动,但可以在本地安装上运行

我有一个maven项目,它生成一个.war应用程序。当我在本地安装的jetty9中部署此war时,该应用程序可以正常工作。当我在AWS中部署到我的机器时,它无法启动,出现以下错误

2017-07-05 17:53:43.336:WARN:oejuc.AbstractLifeCycle:main: FAILED o.e.j.w.WebAppContext@3dd3bcd{/my-app,file:/var/cache/jetty9/data/jetty-0.0.0.0-8080-my-app.war-_my-app-any-5436545420435013189.dir/webapp/,STARTING}{/my-app.war}: java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
        at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:331)
        at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392)
        at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
        at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)

这是一个Jersey 2应用程序,它通过Jersey 1编写的旧客户端与另一个api通信。我已经在Jersey的两个版本之间存在冲突,并使用maven排除作为indicated here解决了它们,这在本地解决了问题,但由于某种原因,现在在部署时失败了

我没有发现这两种环境之间的差异。我运行了java -jar /usr/share/jetty9/start.java --version,结果在两台机器上是相同的(我与之不同):

Jetty Server Classpath:
-----------------------
Version Information on 38 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
      changes to the --module=name command line options will be reflected here.
 0:         (none specified) | ${jetty.home}/eclipse-ecj-3.11.0.jar
 1:         9.2.18.v20160721 | ${jetty.home}/jetty9-apache-jsp.jar
 2:                    1.2.5 | ${jetty.home}/taglibs-standard-impl.jar
 3:                    1.2.5 | ${jetty.home}/taglibs-standard-spec.jar
 4:                   8.0.37 | ${jetty.home}/tomcat8-api-8.0.37.jar
 5:                   3.0.FR | ${jetty.home}/tomcat8-el-api-8.0.37.jar
 6:                   8.0.37 | ${jetty.home}/tomcat8-jasper-8.0.37.jar
 7:                   8.0.37 | ${jetty.home}/tomcat8-jasper-el-8.0.37.jar
 8:                   2.3.FR | ${jetty.home}/tomcat8-jsp-api-8.0.37.jar
 9:                   8.0.37 | ${jetty.home}/tomcat8-juli-8.0.37.jar
10:                   8.0.37 | ${jetty.home}/tomcat8-util-8.0.37.jar
11:                   8.0.37 | ${jetty.home}/tomcat8-util-scan-8.0.37.jar
12:                    (dir) | ${jetty.base}/resources
13:                   3.1.FR | ${jetty.home}/servlet-api-3.1.jar
14:         9.2.18.v20160721 | ${jetty.home}/jetty9-http.jar
15:         9.2.18.v20160721 | ${jetty.home}/jetty9-server.jar
16:         9.2.18.v20160721 | ${jetty.home}/jetty9-xml.jar
17:         9.2.18.v20160721 | ${jetty.home}/jetty9-util.jar
18:         9.2.18.v20160721 | ${jetty.home}/jetty9-io.jar
19:         9.2.18.v20160721 | ${jetty.home}/jetty9-jndi.jar
20:                    1.5.6 | ${jetty.home}/javax.mail.jar
21:         9.2.18.v20160721 | ${jetty.home}/jetty9-security.jar
22:         9.2.18.v20160721 | ${jetty.home}/jetty9-servlet.jar
23:         9.2.18.v20160721 | ${jetty.home}/jetty9-webapp.jar
24:         9.2.18.v20160721 | ${jetty.home}/jetty9-deploy.jar
25:         9.2.18.v20160721 | ${jetty.home}/jetty9-plus.jar
26:         9.2.18.v20160721 | ${jetty.home}/jetty9-annotations.jar
27:                   3.0.FR | ${jetty.home}/tomcat8-annotations-api-8.0.37.jar
28:                      5.1 | ${jetty.home}/asm-commons-5.1.jar
29:                      5.1 | ${jetty.home}/asm-5.1.jar
30:                   1.1.FR | ${jetty.home}/tomcat8-websocket-api-8.0.37.jar
31:         9.2.18.v20160721 | ${jetty.home}/jetty9-websocket-client-impl.jar
32:         9.2.18.v20160721 | ${jetty.home}/jetty9-websocket-server-impl.jar
33:         9.2.18.v20160721 | ${jetty.home}/jetty9-websocket-api.jar
34:         9.2.18.v20160721 | ${jetty.home}/jetty9-websocket-client.jar
35:         9.2.18.v20160721 | ${jetty.home}/jetty9-websocket-common.jar
36:         9.2.18.v20160721 | ${jetty.home}/jetty9-websocket-server.jar
37:         9.2.18.v20160721 | ${jetty.home}/jetty9-websocket-servlet.jar

我的问题是:AWS机器中有什么不同之处会导致此错误?我还应该去哪里获取更多信息来解决这个问题


共 (1) 个答案

  1. # 1 楼答案

    显然,排除项配置不正确。我排除了com.sun.jersey:jersey-server,但javax.ws.rs:jsr311-api被作为com.sun.jersey:jersey-client的传递依赖项包括在内。我明确地排除了javax.ws.rs:jsr311-api,它起了作用

    我仍然不知道为什么它会在我当地的码头装置中工作。一位队友表示,这可能与每台机器上装入罐子的顺序有关,但我不确定如何检查