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

Java 使用jaxb外部绑定自定义时出错,java,jaxb,weblogic,jax-ws,wsdlc,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/20

我使用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=我通过
my.SuperClass
包含的所有内容必须已经存在,
wsdlc
不会为您生成它。在编译生成的代码时(我认为这是失败的地方),这是因为javac在其类路径中找不到
my.SuperClass

请提供
build.xml
的摘录,展示如何使用
wsdlc

根据报告:

除了WebLogic特定的 wsdlc属性,您还可以定义 下面的标准javac 属性;请参阅Ant文档 如需有关每个 属性:

  • bootclasspath
  • bootClasspathRef
  • classpath
  • [……]
您还可以使用以下命令 带有 wsdlc Ant任务:


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

我没有正确地jar我的类,我想我可以使用WinZip快速将一些类添加到jar中,但是WinZip中的“路径”与java中的包名不相等。花了我一段时间,但我学到了一些关于类路径的知识。

这个类存在于src树下,我从ant运行,也许我应该在那里更改类路径?看我的编辑,我的超类在java src树中,所有生成的文件都在web/web-INF/lib/下的一个jar中结束。_wsdl.jar你能回显${java.class.path}它是否包含
my.SuperClass
?是的,我尝试将my.MySuperClass放入一个jar中并添加,但没有区别。这听起来很愚蠢,但您能否尝试将classspath声明为wsdlc的属性而不是子元素?我尝试了没有区别。这些类已经生成,但是后续的编译和jar都失败了。使用winrar处理像这样的脏东西:)至少,问题现在已经解决了。
<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>