java.lang.ClassFormatError : Absent Code attribute in method that is not native or abstract in class

Problem
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletOutputStream

A very strange and rare problem, happened in JPA or Hibernate development.

Caused by : java. lang. ClassFormatError : Absent Code attribute in method that is not  native or  abstract in  class file javax /persistence /GenerationType  at java. lang. ClassLoader. defineClass1 ( Native  Method ) at java. lang. ClassLoader. defineClassCond (Unknown Source ) at java. lang. ClassLoader. defineClass (Unknown Source ) at java. security. SecureClassLoader. defineClass (Unknown Source ) at java. net. URLClassLoader. defineClass (Unknown Source ) at java. net. URLClassLoader. access$000 (Unknown Source ) at java. net. URLClassLoader$1. run (Unknown Source ) at java. security. AccessController. doPrivileged ( Native  Method ) at java. net. URLClassLoader. findClass (Unknown Source ) at java. lang. ClassLoader. loadClass (Unknown Source ) at sun. misc. Launcher$AppClassLoader. loadClass (Unknown Source ) at java. lang. ClassLoader. loadClass (Unknow

Solution

This is always caused by the javaee.jar which is located at Java.net. Many developers like to grab the javaee.jar with the following Maven coordinate :

<repositories>  <repository>  <id>Java.Net </id>  <url> http://download.java.net/maven/2/ </url>  </repository> </repositories>   <dependencies>  <!-- Javaee API --> <dependency>  <groupId>javax </groupId>  <artifactId>javaee-api </artifactId>  <version>6.0 </version> </dependency>  </dependencies>

But, the javaee.jar from java.net is not contains any method bodies, but the APIs name only. Which is not suitable to use for running or deploying along with your application.

The good practice is always get the original full version of  javaee.jar file from the  http://java.sun.com/javaee/. Just download and install the J2EE SDK, and the  javaee.jar can be found in the “\J2EE_SDK_FOLDER\lib” folder. Include it into your local Maven repository or poject classpath will get rid of the above error message.
Reference
  1. http://weblogs.java.net/blog/ludo/archive/2007/01/java_ee_5_apis.html
  2. http://forums.java.net/jive/message.jspa?messageID=226931
  3. http://jersey.576304.n2.nabble.com/Absent-Code-attribute-in-method-that-is-not-native-td2632542.html

在项目的类路径里添加tomcat下面的servlet-api.jar (罗生沙的解决办法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值