我正在尝试更改我的 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/