I’ve added a cxf plugin to generate toString() on all of the created classes. The method is added and compiles fine, but when I add the maven packaged jar to my build path in another project and add an object to my toString I receive:
java.lang.NoClassDefFoundError: org/apache/cxf/xjc/runtime/JAXBToStringStyle
at com.resx.services.Profile.toString(Profile.java:420)
at java.lang.String.valueOf(String.java:2826)
...
Caused by: java.lang.ClassNotFoundException: org.apache.cxf.xjc.runtime.JAXBToStringStyle
I’m assuming my pom is setup wrong but I’m not sure. Here is the pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.trx</groupId>
<artifactId>resxWebservices</artifactId>
<version>10.4.1</version>
<name>resxWebservices</name>
<packaging>jar</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.6.0</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>src</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>./resxWebservices.wsdl</wsdl>
<extraargs>
<extraarg>-xjc-Xts</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.cxf.xjc-utils</groupId>
<artifactId>cxf-xjc-runtime</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf.xjcplugins</groupId>
<artifactId>cxf-xjc-ts</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable>${JAVA_HOME}/bin/javac</executable>
<compilerVersion>1.6</compilerVersion>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.cxf.xjc-utils</groupId>
<artifactId>cxf-xjc-runtime</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf.xjcplugins</groupId>
<artifactId>cxf-xjc-ts</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
</project>
I have also tried adding
<scope>compile</scope>
to the dependencies with the same issue.
You need to ensure the cxf jar is available on the classpath when you run the other project as well.
You should list your first project as a dependency of the second to ensure the proper dependencies are transitively carried over (instead of just adding the jar itself to the build path)
Alternatively, create a jar-with-dependencies for the first project that will include the cxf jars as well and add that to the second project’s duild/runtime class path