java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/MessagingException
Solution 1
It did not work because classes from javax/javaee-api/provided
dependency are specially constructed. They are not usable runtime because implementation of methods is missing.
Simply adding classes from javax.mail/mail/1.4.5
dependency to the classpath does not help, because classes from javax/javaee-api/provided
are already there. Having javax.mail/mail/1.4.5
dependecy alone solves your problem, but most likely you also need other classes from javax/javaee-api/provided
.
What you can do is to get rid of javax/javaee-api/provided
dependency and get these classes for example from the dependencies provided by target application server. You can use for example following:
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
Because scope is provided, it does not affect the artifact to be built. That's why you can use this one also with other application servers than JBoss. It is same API as in your original dependency, but it contains normal classes.
Solution 2
Weird but the following order works for me,
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
The reverse won't work.
Solution 3
in my case, only use the library:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
Run with JDK 6 and Tomcat without problems
Comments
-
Kayser over 4 years
I have a maven dependency for javaee Bibliothek.
<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0</version> <scope>provided</scope> </dependency>
I get the error in Eclipse in some classes.
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/MessagingException
I added javax.mail dependency.
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.5</version> </dependency>
It did not not work. Any Idea??
-
Kayser almost 12 yearsI need also the other libraries from javaee
-
Mikko Maunu almost 12 yearsI added more instructions to answer.
-
Martin Charlesworth almost 10 yearsI always put the javaee-api dependency LAST in the pom.xml, with the implementation jars before it, that fixes it too
-
udaybhaskar over 7 yearsThis Actually works. @prayag upd Can you please post little more details about how it works exactly.
-
luca.vercelli almost 3 yearsThis works for me. The explaination IMHO is the following: Order is worth in class path. So, this way the compiler uses the javax.mail.MessagingException class contained in the first package, instead of the second one.