近日在項目中集成Elasticsearch后,Jetty啟動報錯。
錯誤日志如下:
Suppressed: |java.lang.RuntimeException: Error scanning entry META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class from jar file:///data/program/capital/cloud/work/jetty-0.0.0.0-16201-capital-cloud.war-_capital-cloud-any-/webapp/WEB-INF/lib/log4j-api-2.11.1.jar | at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:891) | at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:837) | at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159) | at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:462) | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:673) | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:591) | at java.lang.Thread.run(Thread.java:748) |Caused by: |java.lang.IllegalArgumentException | at org.objectweb.asm.ClassReader.<init>(Unknown Source) | at org.objectweb.asm.ClassReader.<init>(Unknown Source) | at org.objectweb.asm.ClassReader.<init>(Unknown Source) | at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:959) | at org.eclipse.jetty.annotations.AnnotationParser.parseJarEntry(AnnotationParser.java:940) | at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:887) | at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:837) | at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159) | at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:462) | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:673) | at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:591) | at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.RuntimeException: Error scanning entry META-INF/versions/9/module-info.class from jar file:///data/program/capital/cloud/work/jetty-0.0.0.0-16201-capital-cloud.war-_capital-cloud-any-/webapp/WEB-INF/lib/log4j-api-2.11.1.jar at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:891) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:837) at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159) at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:462) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:673) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:591) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalArgumentException at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:959) at org.eclipse.jetty.annotations.AnnotationParser.parseJarEntry(AnnotationParser.java:940) at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:887) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:837) at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159) at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:462) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:673) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:591) at java.lang.Thread.run(Thread.java:748)
於是翻江倒海的四處查解決方案,有的說把jar包里面的version刪掉再重新打包更改版本號,試過不起作用。
后來又找歷史發布公告,發現是jetty版本不兼容引起的,升級到jetty-9.4.8.v20171121即可完美解決問題。

查找的一些資源網站:
2. https://blog.csdn.net/baidu_34036884/article/details/80151963
3. 關於jdk9的兼容問題:
https://github.com/eclipse/jetty.project/issues/1797
https://github.com/eclipse/jetty.project/pull/1801
4. 歷史版本發布記錄:
https://www.eclipse.org/lists/jetty-announce/2017/Nov/index.php
9.4.7針對jdk9開始兼容:https://www.eclipse.org/lists/jetty-announce/msg00111.html
9.4.8針對jdk9兼容優化:https://www.eclipse.org/lists/jetty-announce/msg00114.html
5. Jetty文檔:
https://www.eclipse.org/jetty/documentation/9.3.27.v20190418/
6. Jetty歷史服務下載地址
https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/
