使用Jetty 9.2的META-INF / versions / 9 / *和Elasticsearch 6.2.2+上的字节码扫描错误

时间:2018-06-20 20:29:36

标签: java elasticsearch jetty multi-release-jar

以最新版本的Elasticsearch(6.1.1以上)在Superdev模式下运行GWT应用程序会产生以下错误(请参见下文)。 显然,该问题与过时的Jetty版本有关。 有谁知道如何在GWT中替换Jetty或在IntelliJ中更改配置以使用其他服务器?我认为,GWT文档中的说明编写得不好。当然,理想情况下,当然,我希望有一种方法可以直接在GWT中更改Jetty,以便所有项目都可以使用更新的版本,而不是使用自己的服务器配置每个项目。

2018-06-20 16:17:13.923:INFO:oejs.Server:main: jetty-9.2.z-SNAPSHOT
Starting Jetty on port 8888
   [WARN] Failed startup of context c.g.g.d.s.j.WebAppContextWithReload@39f6694a{/,file:/Users/../Library/Caches/IntelliJIdea2018.1/gwt/....86a74491/....92536ba7/run/www/,STARTING}{/Users/../Library/Caches/IntelliJIdea2018.1/gwt/....86a74491/....92536ba7/run/www}
MultiException[java.lang.RuntimeException: Error scanning entry META-INF/versions/9/org/elasticsearch/core/internal/io/Streams.class from jar file:/Users/../Library/Caches/IntelliJIdea2018.1/gwt/.86a74491/.92536ba7/run/www/WEB-INF/lib/elasticsearch-core-6.3.0.jar, java.lang.RuntimeException: Error scanning entry META-INF/versions/9/org/elasticsearch/monitor/jvm/JvmPid.class from jar file:/Users/../Library/Caches/IntelliJIdea2018.1/gwt/...86a74491/.92536ba7/run/www/WEB-INF/lib/elasticsearch-6.3.0.jar]
    at org.eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations(AnnotationConfiguration.java:536)
    at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:447)
    at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:479)

1 个答案:

答案 0 :(得分:2)

您的类路径中有一个JEP238 MultiRelease Jar File

META-INF/versions/9/为前缀条目的证据。

JEP238是Java 9引入的一个概念。

直到Jetty 9.4.9.v20180320(于2018年3月)才引入了对字节码扫描期间处理JEP238 MultiRelease JAR文件的Jetty支持。

如果您需要使用Jetty 9.2.x,则不必使用JEP238 MultiRelease JAR文件。

如果必须使用JEP238 MultiRelease JAR文件,则必须至少升级到Jetty 9.4.9.v20180320。