我正在尝试将Jetty 9.1.4.v220140401嵌入到我的应用程序中。我可以得到要编译的代码,但我在尝试运行项目时遇到了这个错误:
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。要使此代码正确运行,我需要包含哪些内容?谢谢
当我以独立的方式运行jetty+jersey+氛围时,我遇到了这个例外。
这些链接可能会有所帮助:
- https://weblogs.java.net/blog/ludo/archive/2007/01/java_ee_5_apis.html
- http://helponjee.blogspot.com.es/2012/04/classformaterror-absent-code-attribute.html
我会把它写下来,以防链接丢失(它对我来说是解决它的办法(
根本原因:这是因为您的构建路径中存在javaeeapi.jar,用于事务注释
解释:Java EE API jar已经通过Maven存储库发布。您可以用这个jar编译代码,但当然不能用它运行应用程序,因为它只包含JavaEEAPI,不包含任何方法体。如果您尝试运行,就会出现此异常。
解决方案:从构建路径中删除javaeeapi.jar,因为它没有正确的类定义,而只有类主体
注意:在我的情况下,我删除了:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>