gpt4 book ai didi

jaxb2 - JAXB : globalBindings in bindings. xml 被忽略

转载 作者:行者123 更新时间:2023-12-01 02:38:00 30 4
gpt4 key购买 nike

我正在尝试使用 JAXB 从 XML 模式生成 java 文件。架构中的一种数据类型是具有大约 300 个可能值的字符串。由于这大于 256,默认情况下,xjc 不会为此类型生成枚举,而是使用字符串。由于我想生成枚举,因此我创建了一个具有以下内容的 bindings.xml:

<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb">
<globalBindings typesafeEnumMaxMembers="1000" />
</bindings>

由于未知原因,这不起作用。 xjc 没有给我任何线索。起初我以为我没有包含该文件,所以我检查了。我还试图故意拼错元素名称,如 globalBindingsglobalBinding并发现 xjc 提示无效元素——这显然意味着 xjc 读取了绑定(bind)文件。

但是,当我将 globalBindings 放在 xsd 中时,它工作得很好——生成了枚举。
<xs:schema ....>
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings typesafeEnumMaxMembers="1000" />
</xs:appinfo>
</xs:annotation>
...
...
</xs:schema >

所以我的问题是 bingings.xml 中设置的选项(由 xjc 读取)为什么不用于自定义编译?我在这里想念什么?

非常感谢您的帮助。

最佳答案

我意识到当前目录的长度导致 xjc 忽略绑定(bind)配置。

执行以下命令失败或成功(与绑定(bind)有关)取决于项目的基本目录:

xjc -extension  src/main/resources/schema/schema.xsd -b src/main/resources/schema/bindings.xjb  -d target/tmp

所以项目的目录越短,成功的可能性就越大:
FAILS: C:/anydir/tstaaaaaaaaaaaaaaaa/asubdirectory/_this_is_any_project_directory_
FAILS: C:/anydir/tstaaaaaaaa/asubdirectory/_this_is_any_project_directory_
FAILS: C:/anydir/tstaaa/asubdirectory/_this_is_any_project_directory_
FAILS: C:/anydir/tstaa/asubdirectory/_this_is_any_project_directory_
WORKS: C:/anydir/tsta/asubdirectory/_this_is_any_project_directory_
WORKS: C:/anydir/tst/asubdirectory/_this_is_any_project_directory_

我的同事使用类似的环境(也是 Windows、相同的 JDK、相同的项目源)没有如此严格的长度限制。
所以我不知道是什么导致了这种限制。但是在我将项目源代码定位在靠近根目录的位置后,它对我有用。

关于jaxb2 - JAXB : globalBindings in bindings. xml 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367725/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com