问题描述
当尝试运行从带有javax.xml.namespace.QName属性的wsdl自动生成的java类时,我遇到了问题,它在Java 7中正常工作,但是在更改版本时它停止了识别。 pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${servlet.jstl.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.xml.stream</groupId>
<artifactId>stax-api</artifactId>
<version>1.0-2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.8</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.2</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
<!--<scope>provided</scope>-->
<exclusions>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
<!--<scope>provided</scope>-->
<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
</exclusion>
<exclusion>
<groupId>stax</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.9</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.3.0</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- Apache Commons IO -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- Apache Commons Fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- Apache Commons Lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.1</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- Java Activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- JavaMail extension -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.5</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-json-org</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-ri</artifactId>
<version>2.3.0</version>
<type>pom</type>
</dependency>
</dependencies>
我尝试为xml-apis添加排除项,但仍然无法正常工作我不知道还有什么要删除要添加的内容我在循环中尝试了几种方法,但我无法找到解决方案,但多数情况下总是这样使用Java-7,但是目前它正在java-11中进行这些更改,我无法超越这一点,因为导致我出现问题的唯一原因是:javax.xml.namespace.QName包javax.xml.namespace是可从多个模块访问:java.xml
但是在书店中,有依赖关系在寻找它们。我还留下了引起问题的代码。我想知道是否有解决方案。多谢您的支持。我已经尝试了1周的解决方案。
Service.java
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceFeature;
@WebServiceClient(name = "service",wsdlLocation = "/wsdl/wsd_creado.wsdl",targetNamespace = "http://camel.apache.org/cxf/jaxws/dispatch")
public class Service extends javax.xml.ws.Service {
public final static URL WSDL_LOCATION;
public final static QName SERVICE = new QName("http://camel.apache.org/cxf/jaxws/dispatch","service");
public final static QName Port = new QName("http://camel.apache.org/cxf/jaxws/dispatch","port");
static {
URL url = Service.class.getResource("/wsdl/wsd_creado.wsdl");
if (url == null) {
url = Service.class.getClassLoader().getResource("/wsdl/wsd_creado.wsdl");
}
if (url == null) {
java.util.logging.Logger.getLogger(Service.class.getName())
.log(java.util.logging.Level.INFO,"Can not initialize the default wsdl from {0}","/wsdl/wsd_creado.wsdl");
}
WSDL_LOCATION = url;
}
public Service(URL wsdlLocation) {
super(wsdlLocation,SERVICE);
}
public Service(URL wsdlLocation,QName serviceName) {
super(wsdlLocation,serviceName);
}
public Service() {
super(WSDL_LOCATION,SERVICE);
}
public Service(WebServiceFeature ... features) {
super(WSDL_LOCATION,SERVICE,features);
}
public Service(URL wsdlLocation,WebServiceFeature ... features) {
super(wsdlLocation,QName serviceName,serviceName,features);
}
@WebEndpoint(name = "port")
public AbsenceContingent getPort() {
return super.getPort(Port,AbsenceContingent.class);
}
@WebEndpoint(name = "port")
public AbsenceContingent getPort(WebServiceFeature... features) {
return super.getPort(Port,AbsenceContingent.class,features);
}
}
如果pom.xml中存在可以纠正的错误,或者我必须修改代码,或者在java-11中必须更改另一种方法,我将不胜感激。
解决方法
我今天面临着完全相同的问题,并且遇到了一个非常有帮助的帖子。也许对您也有用。 Here you go。
对我来说,解决方案是lilalinux用户的答案。