【问题标题】:JAXB Ant Task Error: xjc2 [ERROR] null unknown locationJAXB Ant 任务错误:xjc2 [ERROR] null 未知位置
【发布时间】:2010-08-19 22:49:49
【问题描述】:

使用 Ant 的 xjc2 任务绑定一些有效的 XML 文档时,我收到以下失败消息:

[xjc2] [ERROR] null
[xjc2] unknown location

文件与其他绑定成功的文件非常相似,所有导入的模式都存在。以详细模式运行 xjc 产生:

Parent is not Defined Class...I cannot get the fields from this class

有人知道这是什么意思吗?

【问题讨论】:

    标签: java ant jaxb xjc


    【解决方案1】:

    架构正确性检查

    在我们使用 XJC 的过程中,我们看到了一个类似的问题(请参见下面的链接),该问题通过禁用模式正确性检查得到解决:

    尝试以下系统属性来禁用架构正确性检查。

    -Dcom.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.noCorrectnessCheck=true
    

    对于 Ant,请尝试:

    <xjc target="src">
      <schema dir="src" includes="**/*.xsd" excludes="**/debug.xsd"/>
      <arg value="-nv" />
    </xjc>
    

    从以下页面中,-nv 参数与架构正确性检查有关:

    进入代码

    您可以尝试以编程方式与 XJC 交互(见下文)并插入您自己的 EntityResolver 以查看导入/包含失败的位置:

    import com.sun.codemodel.*;
    import com.sun.tools.xjc.*;
    import com.sun.tools.xjc.api.*;
    
    SchemaCompiler sc = XJC.createSchemaCompiler();
    sc.setEntityResolver(new YourEntityResolver());
    sc.setErrorListener(new YourErrorListener());
    sc.parseSchema(SYSTEM_ID, element);
    S2JJAXBModel model = sc.bind();
    

    【讨论】:

    • 我尝试将此参数作为 提供给 xjc2 任务。我将它作为子节点添加到 节点(在我的其他参数旁边)。我收到以下错误:“无法识别的参数 -Dcom.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.noCorrectnessCheck=true”
    • 我已经更新了我的答案。 ant 任务中的 -nv 参数似乎与模式正确性检查有关。
    • -nv 参数有效,但是错误仍然存​​在。我还使用外部工具来验证架构没有问题,所以我认为这不是问题所在。另外,我正在运行 任务,而不是 (尽管参数仍然有效)。
    • 是否存在代理问题?我试图通过在我的环境中禁用 HTTP 代理来重现您的问题,但我收到一个错误,但它与您的不同,但它可能值得一试。我添加了一些关于如何以编程方式访问 XJC 的详细信息。如果您传入自己的 EntityResolver,您可能会更好地处理导致失败的架构。
    • 以下线程可能有用。 IT 讨论了 URI 中的哈希“#”字符导致“未知位置”错误。 old.nabble.com/xjc-2.2-and-the-hash-character-td26957314.html
    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 2023-03-09
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    相关资源
    最近更新 更多