0

我使用 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>

编译的错误消息是:找不到符号 my.MySuperClass。并且来自 javac:“我的包不存在”。类路径 = 我通过<pathelement location=etc. 包含的所有内容以及来自 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>
4

3 回答 3

1

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

于 2009-10-22T08:51:35.830 回答
1

请提供build.xml显示您如何使用的摘录wsdlc

根据文档

除了 WebLogic 特定的 wsdlc 属性外,您还可以定义以下标准 javac 属性;有关每个属性的更多信息,请参阅 Ant 文档:

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

您还可以将以下标准 Ant 子元素与 wsdlc Ant 任务一起使用:

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

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

于 2009-10-22T09:00:57.703 回答
0

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

于 2009-10-23T15:12:07.703 回答