java.lang.ClassFormatError:在类文件javax / mail / MessagingException中非本机或抽象的方法中的Absent Code属性
我对javaee Bibliothek有一个maven依赖。
javax javaee-api 6.0 provided
我在某些类中遇到Eclipse中的错误。
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/MessagingException
我添加了javax.mail依赖项。
javax.mail mail 1.4.5
它没有用。 任何想法??
它不起作用,因为javax/javaee-api/provided
依赖项中的类是专门构造的。 它们不可用于运行时因为缺少方法的实现。
简单地将类从javax.mail/mail/1.4.5
依赖项添加到类路径也无济于事,因为javax/javaee-api/provided
类已经存在。 单独使用javax.mail/mail/1.4.5
dependecy可以解决您的问题,但很可能您还需要来自javax/javaee-api/provided
其他类。
你可以做的是摆脱javax/javaee-api/provided
依赖关系,并从目标应用服务器javax/javaee-api/provided
依赖关系中获取这些类。 您可以使用以下示例:
org.jboss.spec jboss-javaee-6.0 1.0.0.Final pom provided
由于提供了范围,因此不会影响要构建的工件。 这就是为什么你可以将这个应用程序与JBoss之外的其他应用程序服务器一起使用。 它与原始依赖项中的API相同,但它包含普通类。
在我的情况下,只使用库:
javax.mail mail 1.4
使用JDK 6和Tomcat运行没有问题
很奇怪,但以下顺序对我有用,
javax.mail mail 1.4 javax javaee-web-api 6.0 provided
反过来不行。
如果你按照这个顺序将它们添加到你的pom:javax.mail javaee-web-api它的工作原理是非常合乎逻辑的,因为运行时首先从javax.mail中找到必要的类(使用正确的实现),忽略任何类似的来自javaee-web-api的class(没有实现)。