Jetty Version 9会为嵌入式服务器抛出java.lang.NoClassDefFoundError

时间:2015-12-03 22:49:20

标签: jetty java-7 embedded-jetty

我决定升级Jetty以添加对HTTPS连接的支持。构建由Maven成功完成,代码在Java 7 JRE上运行。 使用嵌入式服务器代码从Jetty 8(8.1.8.v20121106)升级到Jetty版本9(9.2.14.v20151106)后,我在Jetty服务器启动开始时收到以下错误。

是否提示在类加载器中导致错误的原因是什么?

sh ./testit.sh
Exception in thread "main" java.lang.NoClassDefFoundError: org.eclipse.jetty.server.HttpConfiguration$Customizer
    at java.lang.J9VMInternals.verifyImpl(Native Method)
    at java.lang.J9VMInternals.verify(J9VMInternals.java:94)
    at java.lang.J9VMInternals.prepare(J9VMInternals.java:514)
    at java.lang.Class.getMethod(Class.java:1113)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:507)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:499)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.HttpConfiguration$Customizer
    at java.net.URLClassLoader.findClass(URLClassLoader.java:600)
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:777)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:750)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:326)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:731)
    ... 6 more

1 个答案:

答案 0 :(得分:0)

我已经隔离了错误原因。 Maven构建工具将Jetty分发版本号添加到目标库,这与我的Java静态类路径配置不匹配。在更正启动脚本中的类路径设置后,程序代码启动了嵌入式Jetty 9服务器,并且对我的项目工作得很好。

@Joakim Erdfelt这是我的Java版本

java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build pxa6470sr9fp10-20150708_01(SR9 FP10))
IBM J9 VM (build 2.6, JRE 1.7.0 Linux amd64-64 Compressed References 20150701_255667 (JIT enabled, AOT enabled)
J9VM - R26_Java726_SR9_20150701_0050_B255667
JIT  - tr.r11_20150626_95120.01
GC   - R26_Java726_SR9_20150701_0050_B255667_CMPRSS
J9CL - 20150701_255667)
JCL - 20150628_01 based on Oracle jdk7u85-b15