使用jaxb外部绑定自定义时出错

时间:2009-10-22 08:42:27

标签: java jaxb weblogic jax-ws wsdlc

我使用wsdlc工具(weblogic 10.3.1)从wsdl生成类。 我有以下外部jaxb绑定自定义文件:

<jaxb:bindings
    xmlns="http://java.sun.com/xml/ns/jaxb"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    schemaLocation="web/WEB-INF/....xsd"
    version="2.1">

    <jaxb:bindings  node="/xs:schema">
        <jaxb:globalBindings>
            <xjc:superClass name="my.MySuperClass" />
        </jaxb:globalBindings>
    </jaxb:bindings>
</jaxb:bindings>

complilation上的错误消息是:找不到符号my.MySuperClass。 并从javac:“包我不存在”。 classpath =我通过<pathelement location=等包含的所有内容以及来自eclipse插件的60行。问题在于wsdlc启动的javac命令。该命令的类路径是正确的(例如硬编码路径)但仍然“包...不存在”。

使用ant的wsdlc就是这样:

<path id="class.path">
  <pathelement path="${java.class.path}" />
  <pathelement location="... hard coded path on disk to a jar" />
</path>

<target name="generate-ws-from-wsdl">
<wsdlc failOnError="true"
       srcWsdl="${basedir}/web/WEB-INF/ps.wsdl"
       destImplDir="${basedir}/src"
       destJwsDir="${basedir}/web/WEB-INF/lib"
       srcPortName="PsPort"
       type="JAXWS">
    <binding file="jaxb-bindings.xml" />
    <classpath refid="class.path" />
</wsdlc>
</target>

3 个答案:

答案 0 :(得分:1)

my.SuperClass必须已经存在,wsdlc不会为您生成它。在编译生成的代码时(这是我假设的是失败的地方),这是因为javac在类路径中找不到my.SuperClass

答案 1 :(得分:1)

请提供build.xml的摘录,说明您如何使用wsdlc

根据documentation

  

除了WebLogic特定的   wsdlc属性,你也可以定义   以下标准javac   属性;请参阅Ant文档   有关每个的其他信息   属性:

     
      
  • bootclasspath
  •   
  • bootClasspathRef
  •   
  • classpath
  •   
  • [...]
  •   
     

您还可以使用以下内容   标准的Ant子元素与   wsdlc Ant任务:

     
      
  • <FileSet>
  •   
  • <SourcePath>
  •   
  • <Classpath>
  •   

您是否指定了要包含my.SuperClass的类路径?

答案 2 :(得分:0)

我没有正确地运行我的类,我想我可以使用WinZip快速添加一些类到jar,但WinZip中的'path'不等于java中的包名。我花了一段时间,但我学到了类路径。