当前位置: 首页 > 知识库问答 >
问题:

嵌入式绑定不适用于jaxb xjc 3.0.0

吕霖
2023-03-14

我使用jaxb 3.0.0(xjc.sh)来创建Java类,但出于某种原因,它不尊重嵌入式绑定。jaxb 2.3.1也可以正常工作

$pwd/c/jaxb-ri-3.0.0/jaxb-ri/bin

xjc.shValidation.xsd

它正在创建ApiValidator。java,我希望它不会创建一个新的绑定,而不是引用我作为嵌入绑定的绑定。

  • a/model/ApiValidator。java

$cat Validation.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="a/model"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
           xmlns:tns="a/model" elementFormDefault="qualified">

    <xs:attribute name="Description" type="xs:string"/>
    <xs:attribute name="Required" type="xs:boolean"/>

    <xs:complexType name="ValidationAction">
        <xs:sequence>
            <xs:element name="api" type="xs:string" tns:Description="Indicates the validation API"/>
            <xs:element name="method" type="xs:string" tns:Description="Indicates the validation method"/>
            <xs:element name="beanName" type="xs:string" tns:Description="Validation bean name"/>
            <xs:element name="validationClass" type="xs:string" tns:Description="Validation class type"/>
            <xs:element name="idOwner" type="xs:int" tns:Description="Indicates the owner associated with the validation"/>
            <xs:element name="valid" type="xs:boolean" tns:Description="Indicates if validation is valid"/>
            <xs:element name="validator" type="tns:ApiValidator" minOccurs="0" maxOccurs="1"
                        tns:Description="Reference to the API validator"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="ApiValidator">
        <xs:annotation>
            <xs:appinfo>
                <jaxb:bindings node="//xs:complexType[@name='ApiValidator']">
                    <jaxb:class ref="a.ApiValidator"/>
                </jaxb:bindings>
            </xs:appinfo>
        </xs:annotation>
    </xs:complexType>

</xs:schema>

然而,如果我对2.3.1版本, $ ./ xjc.shValidation.xsdJava主要版本也这样做:8解析模式...编译模式...

  • a\model\ObjectFactory。java
  • a\model\ValidationAction。java
  • a\model\package信息。爪哇

我需要使用3.0.0版本,因为它生成雅加达名称空间。请说明为什么它不工作以及如何修复它?

这种行为与下面提到的xml相同:

$ cat V.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="a/model"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
           xmlns:tns="a/model" elementFormDefault="qualified">

    <xs:attribute name="Description" type="xs:string"/>
    <xs:attribute name="Required" type="xs:boolean"/>

    <xs:complexType name="ValidationAction">
        <xs:sequence>
            <xs:element name="api" type="xs:string" tns:Description="Indicates the validation API"/>
            <xs:element name="method" type="xs:string" tns:Description="Indicates the validation method"/>
            <xs:element name="beanName" type="xs:string" tns:Description="Validation bean name"/>
            <xs:element name="validationClass" type="xs:string" tns:Description="Validation class type"/>
            <xs:element name="idOwner" type="xs:int" tns:Description="Indicates the owner associated with the validation"/>
            <xs:element name="valid" type="xs:boolean" tns:Description="Indicates if validation is valid"/>
            <xs:element name="validator" type="tns:ApiValidator" minOccurs="0" maxOccurs="1"
                        tns:Description="Reference to the API validator"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="ApiValidator">
        <xs:annotation>
            <xs:appinfo>
                <jaxb:class ref="rd.ApiValidator"/>
            </xs:appinfo>
        </xs:annotation>
    </xs:complexType>


</xs:schema>

正如中所建议的:为rootElement忽略Jaxb implClass规范

共有1个答案

姬正文
2023-03-14

事实证明,我不得不将线路从:

  • xmlns: jaxb="http://java.sun.com/xml/ns/jaxb"jaxb: version="2.0"to
  • xmlns: jaxb=https://jakarta.ee/xml/ns/jaxbjaxb: version=3.0
 类似资料:
  • 问题内容: 有人告诉我: 垂直对齐仅适用于内联,内联块,图像和表格元素。 与text-align不同,它必须应用于子元素,而不是应用于父元素。 但是,当我尝试在内联块元素上设置垂直对齐中间时,它不起作用。为什么? 问题答案: 这是行不通的,因为它vertical- align设置了行内内容相对于其行框而不是其包含块的对齐方式: 此属性影响由inline-level元素生成的框的线框内的垂直位置。

  • 问题内容: AngularJS的两个绑定不适用于div。我希望我的div是可编辑的,但是没有发生。有人可以建议出什么问题吗?相同的绑定在文本框中也可以正常工作。这是我的代码: 问题答案: 请尝试此操作,它可能会有所帮助 https://github.com/angular/angular.js/issues/528 这是一个3岁的未解决问题,很多人希望解决。它被标记为和,而不是错误。鉴于Angul

  • 问题内容: 我有一个注入了Facade对象的Jersey资源。这是在我的配置中,并且立面被很好地注入了。外墙包含一个DAO类,该类也应注入并在同一类中配置。现在到我的问题;DAO类为null。因此,不注射。 工厂实例非常简单。他们只是调用构造函数并将参数传递给它。 奇怪的是,当我使用bind(Class object)而不是bindFactory时,这绝对可以正常工作。 编辑 工厂工厂 问题答案:

  • 六羟甲基三聚氰胺六甲醚。。在某些情况下,我有一个对象需要在hazelcast实例上执行操作。所以我实现了HazelcastInstanceAware接口,但这似乎不适用于嵌套类。。。 以下核心输出"null"到控制台: 公共类NullError实现可序列化,HazelcastInstanceAware{私有瞬态HazelcastInstance instance1;私有瞬态HazelcastIns

  • 问题内容: 我正在使用Java开发应用程序,该应用程序需要做一些复杂的逻辑规则推演,并将其作为功能的一部分。我想用Prolog或其他逻辑/约束编程语言(而不是Java)编写我的逻辑推论,因为我相信生成的代码将大大简化和维护。 我在Prolog上搜索了嵌入式Java实现,并找到了很多,每个文档都很少。我的(适度)选择标准是: 应该可嵌入Java中(例如,可以与我的Java软件包捆绑在一起,而不需要在