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>
我的 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>