我对来自mortbay的maven jetty插件6具有相同的配置
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
</plugin>
来自eclipse的maven jetty插件9
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.11.v20160721</version>
</plugin>
第一个是工作,第二个不工作,给出以下错误:
2016-08-06 11:43:59.281:INFO:oejs.Server:main: jetty-9.3.6.v20151106
2016-08-06 11:44:01.247:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.m.p.JettyWebAppContext@c85b0c{/,file:///C:/.../IdeaProjects/MultiModuleSimple/simple-webapp/src/main/webapp/,STARTING}{file:///C:/.../IdeaProjects/MultiModuleSimple/simple-webapp/src/main/webapp/}
java.lang.RuntimeException: Error scanning entry com/ibm/icu/impl/data/LocaleElements_zh__PINYIN.class from jar file:///C:/.../.m2/repository/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:937)
...
最后它显示了Started Jetty Server,但页面显示为503。
其他信息:我有一个多模块项目,父项目和两个子项目,其中一个是webapp,另一个是构建jar的普通Java。我在webapp pom中有jetty插件。
答案 0 :(得分:3)
工件com/ibm/icu/impl/data/LocaleElements_zh__PINYIN.class
中的工件类icu4j-2.6.1.jar
为known to be bad,因为字节码本身很糟糕。
更新icu4j
和/或使用icu4j
的库,它将会消失。
至于为什么它适用于Jetty 6而不是Jetty 9,那就是你刚刚完成了equivalent of 13 major version updates of Jetty。这就像是直接从MSDOS转到Windows 10,跳过所有中间版本。
Jetty versioning: [servlet-support].[major-version].[minor-version]
-------------------------------------------------------------------
6.1 - Servlet 2.5 / Mortbay
7.0 - Servlet 2.5 / Eclipse Foundation Move + OSGi
7.1 - NIO additions, websocket proposal + client support, SSL overhaul
7.2 - websocket drafts support - dropped java6 requirement
7.3 - the big debugging, logging, security, and session update
7.4 - large internal buffers / memory overhaul
7.5 - purge of pre java 1.6 hacks (old project), osgi / maven / deprecation overhaul
7.6 - SPDY introduced - servlet spec error handling overhaul
8.0 - Servlet 3.0 - Java 7 minimum requirement
8.1 - SPDY introduced
9.0 - Servlet 3.1-draft / blocking connectors dropped
9.1 - Servlet 3.1 final / Connector overhaul
9.2 - WebSocket RFC overhaul + JSR356 addition
9.3 - HTTP/2 introduced - Java 8 minimum requirement
您也从Servlet 2.5转到Servlet 3.1,并且引入了扫描Web应用程序注释的要求。 Jetty 6并不关心icu4j,也没有扫描你的webapp。 Jetty 9需要扫描webapp中的所有字节码,以获取实现servlet规范所需的关键接口的注释和类。
由于这个新的字节码扫描,Jetty现在完全了解您一直有的icu4j问题,并且正在报告它。