java - .xsd 不是此编译的一部分。这是 .xjb 的错误吗

标签 java xsd

我正在尝试更改我的 xjb 文件中的 schemaLocation 以不使用使用 URL 的远程文件,而是使用也在版本控制下的本地副本。

例如我的xjb 文件有类似的内容

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings
        xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xsd:ID="JaxbBindingsForWMiddleware"
        version="2.0">

    <jxb:bindings node="/xsd:schema"
                  schemaLocation="http://myserver:80/a/b/c/d/myxsd.xsd">

例如,当我将其更改为本地副本时

schemaLocation="../../src/main/resources/myxsd.xsd">

mvn clean install 将失败并显示类似于

的消息

[WARNING] Caused by: com.sun.istack.SAXParseException2; systemId: file:/E:/somefolder/somefolder/myjavaproject/target/bindings/myxjb.xjb; lineNumber: 33; columnNumber: 33; "file:/E:/somefolder/somefolder/myjavaproject/target/bindings/mywsdl.wsdl" is not a part of this compilation. Is this a mistake for "file:/E:/somefolder/somefolder/myjavaproject/target/bindings/myxjb.xjb"?

我注意到它正在 target 目录中寻找我的 wsdl 文件。我可以通过指向 src 目录的方式操作 schemaLocation。然后路径存在,但消息仍然存在。

我也可以将 wsdl 放在目标目录中,java 会尝试在该目录中找到它,但在那种情况下,消息也保持不变。

所以看起来需要做一些特定的事情才能让它成为这个汇编的一部分。应该怎么做才能以正确的方式编译它?

最佳答案

在我的环境(版本 2.2)中,它仅在文件位于专用文件夹(src/main/xsd/schema.xsd 中的架构和绑定(bind) src/main/xsb/binding.xsb 中的架构)和引用的绑定(bind)文件时才有效模式相对: schemaLocation="../xsd/schema.xsd"

它看起来真的很脆弱。

关于java - .xsd 不是此编译的一部分。这是 .xjb 的错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33232039/

相关文章:

java - Hibernate 示例查询

xml - 使用 XSD 确保 XML 验证中的字符串不为空

java - 从 xml 生成 xsd 时混合 ="true"

xml - XInclude 架构/命名空间验证?

xml - xsd-schema 中的自定义属性

XML 架构错误 : Required white space was missing

java - MIDI 乐器不适用于 javax.sound.midi.MidiChannel

Java - 使用 randomAccessFile 写入文件

java - 为什么我在代码中有语句却得到 "missing return statement"?

java - JFreeChart x 轴刻度