当 jetty 9.2 在 pom 中被 9.3 替换时,嵌入式 Jetty JSP 示例停止工作

Embedded Jetty JSP example stops working when jetty 9.2 is replaced by 9.3 in pom

我的 Java 很流利,但网络技术的水平一般。现在,我正在研究在项目中使用 Jetty。我正在为 Java SE 使用 Eclipse Neon。为了熟悉 Jetty,我从去年 8 月开始实施了来自 https://examples.javacodegeeks.com/enterprise-java/jetty/jetty-jsp-example/ 的嵌入式码头 jsp 示例。它使用 Jetty 9.2.11 并且工作正常。请参阅下面的日志。

然后我想将它升级到最新的 Jetty 版本,所以在 pom.xml 我用 9.3.11.v20160721 和所有 Maven依赖关系得到更新。没有进行其他更改。之后,应用程序将停止使用以下详细信息。

来自第一个的完整日志,成功运行,Jetty 9.2.11是

2016-08-22 18:24:29.079:INFO::main: Logging initialized @272ms
2016-08-22 18:24:29.222:INFO:oejs.Server:main: jetty-9.2.11.v20150529
2016-08-22 18:24:29.630:WARN:oeja.AnnotationConfiguration:main: ServletContainerInitializers: detected. Class hierarchy: empty
2016-08-22 18:24:29.755:WARN:oaj.EmbeddedServletOptions:main: Warning: Invalid value for the initParam keepgenerated. Will use the default value of "false"
2016-08-22 18:24:29.756:WARN:oaj.EmbeddedServletOptions:main: Warning: Invalid value for the initParam fork. Will use the default value of "true"
2016-08-22 18:24:29.787:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@66048bfd{/jetty-jsp-example,file:/F:/JettyTutorials/jetty-jsp-example/src/main/webapp/,AVAILABLE}
2016-08-22 18:24:29.890:INFO:oejs.ServerConnector:main: Started ServerConnector@5e2134c1{HTTP/1.1}{0.0.0.0:8080}
2016-08-22 18:24:29.891:INFO:oejs.Server:main: Started @1088ms

来自 second 的日志,失败 运行,使用 Jetty 9.3.11,开始如下:

2016-08-22 18:25:52.551:INFO::main: Logging initialized @297ms
2016-08-22 18:25:52.827:INFO:oejs.Server:main: jetty-9.3.11.v20160721
2016-08-22 18:25:53.260:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=0ms
2016-08-22 18:25:53.300:WARN:oatud.DigesterFactory:main: The XML schema [XMLSchema.dtd] could not be found. This is very likely to break XML validation if XML validation is enabled.

然后最后一行消息继续 24 行,包含各种 dtd-s 和 xsd-s,然后是堆栈转储,以

开头
2016-08-22 18:25:53.358:INFO:oejs.AbstractConnector:main: Started ServerConnector@5abca1e0{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/jasper/JasperException
    at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:113)

再往下

Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
    at java.util.zip.ZipFile.read(Native Method)
    :
    :

我对这个完整的设置不够熟悉,看不出问题所在,我在找到示例的地方找不到联系信息,在网上搜索时也找不到任何指导,部分原因可能是我看不到要搜索的内容,所以我正在联系这个社区,希望得到一些指导。

找到答案here:

The relevant part of the error message is:

invalid LOC header (bad signature) which suggests some binary file being broken, most likely one of the dependencies. If you have a fast Internet connection, just delete your whole maven repository and let maven redownload all the dependencies:

rm -rf ~/.m2/repository/*

或者,在我的 Windows 10 上:我退出了 Eclipse,删除了 C:\Users\MyName\.m2\repository,重新启动了 Eclipse。过了一会儿,大部分配置都重新加载了,但我不得不再次保存 pom 文件以重建整个东西。然后它起作用了!谢谢。