我正在尝试将Jetty 9.1.4.v20140401嵌入到我的应用程序中。我可以获取编译代码,但在尝试运行项目时出现此错误:
Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:144)
at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:119)
at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:107)
at com.example.WebService.main(WebService.java:82)
Java Result: 1
我正在使用Netbeans来编译项目,而我没有使用Maven。基于其他搜索,当我尝试运行代码时,我似乎缺少一个jar,但是我在运行配置文件中包含了jetty-all和servlet-api jar。我需要包含什么才能使此代码正确运行?谢谢!
答案 0 :(得分:1)
当我以独立的方式运行jetty + jersey +氛围时,我遇到了这个例外。
这些链接可能有所帮助:
如果链接掉落(我可以解决它),我会把它写下来。
根本原因: 这是因为构建路径中存在javaeeapi.jar,用于事务注释
<强>说明:强> Java EE API jar已通过Maven存储库发布。 您可以使用此jar编译代码,但当然您无法使用它运行应用程序,因为它只包含Java EE API且不包含任何方法体。 如果你试图运行,你会得到这个例外。
<强>解决方案:强> 从构建路径中删除javaeeapi.jar,因为它没有正确的类定义而只有类主体
注意:在我的情况下,我删除了:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>