org.apache.cxf.tools.common.ToolException: не удалось загрузить класс

Привет, я изучаю веб-сервисы, для этого я создаю пример проекта, который генерирует java из заданного wsdl (wsdl2Java) и сгенерированного кода для wsdl (java2ws). wsdl2java работает нормально, но в java2wsdl я получаю исключение, как показано ниже в моем файле ANT

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

В чем причина проблемы, помогите!! Мой муравей:

<target name="cxfJavaToWSDL" depends="cxfWSDLToJava">
<echo> ************Genarating JavaToWSDL************* </echo>
  <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}/**/CalServiceService.class"/>
       <arg value="-o"/>
     <arg value="${lib.dir}/CalServiceService.wsdl"/>
     <arg value="${classes}/com/saravana/webservice/services/CalServiceService.class"/>
     <classpath>
        <path refid="class.path"/>
         <pathelement location="${classes}/**/*.class"/> 
     </classpath>
  </java>

<target name="cxfWSDLToJava" >
  <echo message="**********Genarating WSDLToJava***********"/>    
  <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
     <arg value="-client"/>
     <arg value="-d"/>
     <arg value="${genCode.dir}"/>
     <!-- <arg value="-b"/>
     <arg value="./async_binding.xml"/> -->
     <arg value="${lib.dir}/CalService.wsdl"/>
     <classpath>
    <path refid="class.path"/>
     </classpath>
  </java>
</target>
<target name="compile-all" depends="cxfJavaToWSDL">
    <javac debug="on" destdir="${classes}">
        <src path="${genCode.dir}"/>
        <classpath refid="class.path"/>
    </javac>
</target>

and my properties and classpath in 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>

person Saravanan    schedule 11.05.2016    source источник


Ответы (2)


Это просто из-за пути к классам. Когда мы хотим java2ws, мы должны предоставить файл класса (скомпилированный) SEI и не должны давать java (src)

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

Это решило мою проблему.

person Saravanan    schedule 11.05.2016

Кажется, вам нужно немного изменить файл 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>
person Sanjeev    schedule 11.05.2016