【问题标题】:Error using jaxb external bindings customization使用 jaxb 外部绑定自定义时出错
【发布时间】:2009-10-22 08:42:26
【问题描述】:

我使用 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:“我的包不存在”。类路径 = 我通过&lt;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>

【问题讨论】:

  • 你能回显 ${java.class.path}
  • 是否包含my.SuperClass
  • 确实如此,我尝试将 my.MySuperClass 放入 jar 中并添加 但没有区别。
  • 这听起来很傻,但你可以尝试将 classespath 声明为 wsdlc 的属性而不是子元素
  • 我试过 没有区别。生成了类,但后续编译和jar失败。

标签: java jaxb weblogic jax-ws wsdlc


【解决方案1】:

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

【讨论】:

  • 该类存在于src树下,我是从ant运行的,也许我应该改变那里的类路径?
【解决方案2】:

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

根据documentation

除了 WebLogic 特定的 wsdlc属性,也可以定义 以下标准 javac 属性;参见 Ant 文档 有关每个的附加信息 属性:

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

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

  • &lt;FileSet&gt;
  • &lt;SourcePath&gt;
  • &lt;Classpath&gt;

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

【讨论】:

  • 查看我的编辑,我的超类在 java src 树中,所有生成的文件最终都在 web/WEB-INF/lib/..._wsdl.jar 下的 jar 中
【解决方案3】:

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

【讨论】:

  • 使用 winrar 处理这样的脏东西 :) 至少,现在问题已经解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多