org/apache/cxf/jaxb/JAXBToStringStyle 上的 NoClassDefFoundError
NoClassDefFoundError on org/apache/cxf/jaxb/JAXBToStringStyle
美好的一天,
我正在使用 apache cxf 和 spring 启动来构建 Web 服务,但是当我尝试调用端点时,它给我这个错误:
WARN 15936 --- [nio-8080-exec-4] o.a.cxf.phase.PhaseInterceptorChain : Application {
endpointMethod has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: org/apache/cxf/jaxb/JAXBToStringStyle
[...]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]
Caused by: java.lang.NoClassDefFoundError: org/apache/cxf/jaxb/JAXBToStringStyle
这是我的网络服务配置:
@Configuration
public class WebServiceConfig {
@Bean
public org.springframework.boot.web.servlet.ServletRegistrationBean cxfServlet() {
return new org.springframework.boot.web.servlet.ServletRegistrationBean(new CXFServlet(), "/cxf-api/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public Conc2MGPService conc2MGPService() {
return new RegistrationServiceEndpoint();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), concessionario2MGPService());
endpoint.publish("/registration_endpoint");
return endpoint;
}
这是我的 POM:
<project ...">
<groupId>com.me.justin</groupId>
<artifactId>registration-gateway-app</artifactId>
<packaging>war</packaging>
<name>registration-gateway-app</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
</dependency>
<dependency>
<groupId>it.justin</groupId>
<artifactId>justin-soap-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-jaxb</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我错过了什么?
我在这里所做的是在请求传递的对象上做一个简单的日志。
@Override
public RegisterContract(RegisterContractRequest registerContractRequest) {
log.info("RegisterContract" + registerContractRequest);
return null;
}
我认为我的 POM 中缺少某些内容,但我不知道是什么。
将此依赖项添加到您的 pom.xml 文件中。
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle</artifactId>
<version>2.7.18</version>
</dependency>
附带说明一下,此 jar 已弃用,请尝试更新您的依赖项。上述 jar 的新版本如下所示。 (但是为了使用它,你必须更新你的相关依赖)
<groupId>org.apache.cxf.xjc-utils</groupId>
<artifactId>cxf-xjc-runtime</artifactId>
<version>3.2.1</version>
美好的一天,
我正在使用 apache cxf 和 spring 启动来构建 Web 服务,但是当我尝试调用端点时,它给我这个错误:
WARN 15936 --- [nio-8080-exec-4] o.a.cxf.phase.PhaseInterceptorChain : Application {
endpointMethod has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: org/apache/cxf/jaxb/JAXBToStringStyle
[...]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]
Caused by: java.lang.NoClassDefFoundError: org/apache/cxf/jaxb/JAXBToStringStyle
这是我的网络服务配置:
@Configuration
public class WebServiceConfig {
@Bean
public org.springframework.boot.web.servlet.ServletRegistrationBean cxfServlet() {
return new org.springframework.boot.web.servlet.ServletRegistrationBean(new CXFServlet(), "/cxf-api/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public Conc2MGPService conc2MGPService() {
return new RegistrationServiceEndpoint();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), concessionario2MGPService());
endpoint.publish("/registration_endpoint");
return endpoint;
}
这是我的 POM:
<project ...">
<groupId>com.me.justin</groupId>
<artifactId>registration-gateway-app</artifactId>
<packaging>war</packaging>
<name>registration-gateway-app</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
</dependency>
<dependency>
<groupId>it.justin</groupId>
<artifactId>justin-soap-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-jaxb</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我错过了什么? 我在这里所做的是在请求传递的对象上做一个简单的日志。
@Override
public RegisterContract(RegisterContractRequest registerContractRequest) {
log.info("RegisterContract" + registerContractRequest);
return null;
}
我认为我的 POM 中缺少某些内容,但我不知道是什么。
将此依赖项添加到您的 pom.xml 文件中。
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle</artifactId>
<version>2.7.18</version>
</dependency>
附带说明一下,此 jar 已弃用,请尝试更新您的依赖项。上述 jar 的新版本如下所示。 (但是为了使用它,你必须更新你的相关依赖)
<groupId>org.apache.cxf.xjc-utils</groupId>
<artifactId>cxf-xjc-runtime</artifactId>
<version>3.2.1</version>