Java 使用 SAAJ 的 SOAP 客户端出错

Error in Java SOAP client using SAAJ

我的 Java 版本是 Java(TM) SE Runtime Environment (build 1.6.0_37-b06)。 我的 Maven 依赖项是 javax.xml.messaging.URLEndpoint class 是:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

我的代码是:

import javax.xml.soap.*;
...
SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = factory.createConnection();
SOAPMessage message = createSOAPRequest();
String url = "http://localhost:8080/serviceapp/hello";
connection.call(message, url);

我得到的堆栈跟踪是:

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/xml/messaging/URLEndpoint
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at 

错误的原因是什么?

在我的例子中,可以通过更新 Maven JAXB 插件的版本来解决问题:

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.11.0</version>

我还必须将 Java EE 版本修改为:

    <dependency>
        <groupId>javaee</groupId>
        <artifactId>javaee-api</artifactId>
        <version>5</version>
    </dependency>