Java org.apache.cxf.tools.common.ToolException:加载类失败
大家好,我正在学习webservices,因为我正在创建一个示例项目,该项目从给定的wsdl(wsdl2Java)生成java,并将生成的代码转换为wsdl(java2ws)。 wsdl2java工作正常,但在java2wsdl中,我在ANT文件中遇到如下异常Java org.apache.cxf.tools.common.ToolException:加载类失败,java,web-services,ant,wsdl,java2wsdl,Java,Web Services,Ant,Wsdl,Java2wsdl,大家好,我正在学习webservices,因为我正在创建一个示例项目,该项目从给定的wsdl(wsdl2Java)生成java,并将生成的代码转换为wsdl(java2ws)。 wsdl2java工作正常,但在java2wsdl中,我在ANT文件中遇到如下异常 Buildfile: D:\sarvan\java\webservice\java2wsVSws2java\build.xml cxfWSDLToJava: [echo] **********Genarating WSDLToJava**
Buildfile: D:\sarvan\java\webservice\java2wsVSws2java\build.xml
cxfWSDLToJava:
[echo] **********Genarating WSDLToJava***********
cxfJavaToWSDL:
[echo] ************Genarating JavaToWSDL*************
[java] JavaToWS Error: org.apache.cxf.tools.common.ToolException: Fail to load class : D:\sarvan\java\webservice\java2wsVSws2java\build \genClasses/com/saravana/webservice/services/CalServiceService.class
compile-all:
[javac] D:\sarvan\java\webservice\java2wsVSws2java\build.xml:54: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 9 source files to D:\sarvan\java\webservice \java2wsVSws2java\build\genClasses
BUILD SUCCESSFUL
Total time: 5 seconds
问题的原因是什么,请提供帮助!!
我的蚂蚁:
************Genarating JavaToWSDL************
以及我在ANT中的属性和类路径
<project name="javawsVSwsTojava" default="compile-all" basedir=".">
<property name="lib.dir" location="./WebContent/WEB-INF/lib" />
<property name="genCode.dir" location="./Java Resources/generatedcode" />
<property name="classes" location="./build/genClasses" />
<property name="wsdl.location" location="" />
<path id="class.path">
<fileset dir="${lib.dir}/dependencies">
<include name="**/*.jar" />
</fileset>
</path>
看来您需要稍微修改一下ant文件以使其正常工作。在您的
java2wsdl
任务中尝试这一点
<java classname="org.apache.cxf.tools.java2ws.JavaToWS" fork="true">
<arg value="-wsdl"/>
<arg value="-classdir"/>
<arg value="${classes}"/>
<arg value="-cp"/>
<arg value="${classes}/"/>
<arg value="-o"/>
<arg value="${lib.dir}/CalServiceService.wsdl"/>
<arg value="com.saravana.webservice.services.CalServiceService"/>
<classpath>
<path refid="class.path"/>
<pathelement location="${classes}/**/*.class"/>
</classpath>
</java>
这只是因为类路径,当我们想要java2ws时,我们必须提供一个SEI类文件(已编译),而不应该提供java(src)
************Genarating JavaToWSDL************
我们应该在类路径中添加编译类和依赖项jar
<path id="class.path">
<pathelement location="${classes}"/>
<fileset dir="${lib.dir}/dependencies">
<include name="**/*.jar" />
</fileset>
</path>
这解决了我的问题
<java classname="org.apache.cxf.tools.java2ws.JavaToWS" fork="true">
<arg value="-wsdl"/>
<arg value="-classdir"/>
<arg value="${classes}"/>
<arg value="-cp"/>
<arg value="${classes}/"/>
<arg value="-o"/>
<arg value="${lib.dir}/CalServiceService.wsdl"/>
<arg value="com.saravana.webservice.services.CalServiceService"/>
<classpath>
<path refid="class.path"/>
<pathelement location="${classes}/**/*.class"/>
</classpath>
</java>
<target name="cxfJavaToWSDL" depends="compile-all">
<echo> ************Genarating JavaToWSDL************* </echo>
<java classname="org.apache.cxf.tools.java2ws.JavaToWS" fork="true">
<arg value="-wsdl" />
<arg value="-o" />
<arg value="${lib.dir}/CalServiceService.wsdl" />
<arg
value="com.saravana.webservice.services.CalService" /><!--you should give fully qualified class name here -->
<classpath>
<path refid="class.path" />
</classpath>
</java>
</target>
<path id="class.path">
<pathelement location="${classes}"/>
<fileset dir="${lib.dir}/dependencies">
<include name="**/*.jar" />
</fileset>
</path>