5

使用最新版本的 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)
4

1 回答 1

7

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

META-INF/versions/9/前缀条目证明。

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

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

如果您需要继续使用 Jetty 9.2.x,那么您将不得不不使用 JEP238 MultiRelease JAR 文件。

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

于 2018-06-21T13:59:11.223 回答