问题标签 [jaxb2-basics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
70255 浏览

java - 生成实现接口的 JAXB 类

我目前正在使用 JAXB 生成 java 类以解组 XML。现在我想创建一个与第一个非常相似的新模式,并让生成的类实现相同的接口。

例如,我有两个模式文件,它们定义了具有相似标签的 XML:

成人.xsd

孩子.xsd

使用 JAXB 和 XJC 我想生成两个类文件:

其中 Person 接口定义了getName()getAge()方法。

我查看了一些有关映射接口的文档,但这似乎仅适用于您已经拥有要映射到 DOM 的 java 类的情况。

另外,我尝试使用这个外部插件,但它似乎不起作用。这是我的 xjb 绑定文件:

但这会产生以下错误:

是否可以使用 JAXB 生成一个实现接口的类?

更新

我试过使用Interface Insertion插件,但由于某种原因无法让它工作。这就是我调用 xjc 的方式,但好像插件 jar 没有从类路径中获取:

我得到错误:

有任何想法吗?

0 投票
2 回答
10366 浏览

plugins - 如何使用来自 maven 的 jaxb_commons 插件

我正在尝试使用 jaxb 插件将接口插入到从 maven 生成类的选择元素中。问题是我似乎无法从 maven 中弄清楚如何做到这一点,文档中的存储库不清楚,唯一的示例(下面)不起作用,它似乎忽略了插件(maven 报告没有找不到它的错误)或插件没有项目文档中当前列出的所有附加组件:

我在根 pom 中有这些:

运行给出:

设置 CmdLine 选项“[-Xifins, -episode, /home/administrador/JavaApp/wnfe3/wnfe-ejb/target/generated-sources/xjc/META-INF/sun-jaxb.episode]”时出错!

嵌入式错误:无法识别的参数 -Xifins

0 投票
1 回答
587 浏览

java - JAXB2 Basics Mergeable 插件:设置自定义合并策略

我已经成功激活了 ant 脚本中的 JAXB2 Basics 'Mergeable' 插件,如下所示:

它正在工作,并将“MergeFrom”接口正确添加到我生成的类中。

我的问题是,每当我尝试使用“mergeStrategyClass”参数指定自定义合并策略时,“MergeFrom”接口会完全从生成的类中消失。我使用的语法如下:

这直接取自JAXB2 Basics 网站上的示例。(类路径似乎很好,因为当我故意拼错类时,我得到了 ClassNotFoundException)

ant构建没有抛出任何错误,并且类已成功生成,除了缺少接口。

0 投票
1 回答
2794 浏览

java - 可以将 jaxb2-basics 配置为为泛型对象的类型变量指定接口吗?

我正在使用 jax-ws 的 wsimport 从 WSDL 生成 java 类。我正在使用 jaxb2-basics 插件来创建 toString、equals、hashCode、复制和合并方法。

如果我们需要更改它,我希望生成的类实现接口以将我们的代码与实现隔离。

我想使用 jaxb2 的能力来生成实现指定接口的类,但成功率有限。类实现接口是不够的。我希望由其他生成的类组成的生成类在引用这些对象时使用接口而不是实现。

我正在使用一个外部绑定文件来定义一个类应该实现的接口:

例如,如果我有一个名为 Bus 的类,其中有一个名为 Person 的类,我希望 Bus 实现 IBus,Person 实现 IPerson,并且 Bus 有一个 IPerson 类型的成员变量,而不是 Person。

我在绑定文件中的内容正在工作。

但是,如果 Bus 有一个 Person 对象列表,我无法让 wsimport 为 Bus 生成一个定义 IPerson 对象列表的类。

这是我使用的示例 wsdl(愚蠢而愚蠢的示例,但它明白了重点):

这是我的pom:

有谁知道是否可以让 jaxb2-basics 生成一个通用对象,其类型变量在 jaxb 绑定文件中指定?

0 投票
1 回答
12975 浏览

maven - maven-jaxb2-plugin 没有生成任何输出

我是 Maven 新手,正在尝试使用它从我的 XSD 生成 Java 类。

我的 xsd 文件位于 src/main/resources/xsd

在依赖项中我有这个,但我认为我不需要它,因为我使用的是 Java 1.6

在构建部分我有

但是,当我运行它时,我什么也得不到。我已经运行 mvn compile 和 generate-sources,使用 -e 和 -X 标志来查看输出,但似乎目标没有被调用。有任何想法吗 ?

0 投票
2 回答
1028 浏览

java - 如何仅告诉 XSD 中的某些类从提供的接口继承?

我发现了一些其他问题以不同的方式提出这个问题,但这些问题的答案都不起作用。他们引用的站点要么已死,要么不适用于 JAXB2。

我需要的是多个生成的类从一个通用接口继承,因为它们都有一个.getName()方法。

而不是必须if(o instanceof XXX)为每种类型都有一个巨大的块,我宁愿Interface通过强制转换来测试这个常见的并调用.getName().

这是我的界面

这是我添加到我的 .xjb 绑定文件中的内容

它没有向生成的类添加任何内容。

将此界面添加到列表中的神奇咒语是什么?

0 投票
7 回答
14997 浏览

java - 使用 Mojo Jaxb2 maven 插件创建 Java 类时生成 hashCode() 和 equals()

我正在处理的代码是使用jaxb2-maven-pluginfromorg.codehaus.mojo从 XSD 模式生成 Java 类。我正在寻找一种自动实现这些类的方法equals()hashCode()方法,但似乎没有办法。我知道还有其他 JAXB2 Maven 插件可以做到这一点(例如 http://confluence.highsource.org/display/J2B/Home),但我想知道你们中是否有人遇到过这个问题,是否有办法修复它。我正在使用xjc目标生成类。

0 投票
2 回答
14295 浏览

java - 使用注释插件 + JAXB 在 java 'field' 中插入自定义注释(在 xsd -> java 上)

用例:

想在 JAXB 生成的 java 类中的字段中插入自定义注释

问题:

使用 Annotate 插件 + JAXB [1],能够成功插入自定义注释,但它们是在 getter 方法而不是字段中插入的。Morphia (mongo DB) 注释(我实际上想要插入)但是只能注释 java 字段 [2]。

我的测试xsd:

我的测试绑定 xjb:

我生成的java片段:

如您所见,我想注释“栏”字段。请指教。如果需要,请询问更多。

[1]使用 Jaxb 或 HyperJaxb 生成 @Indexed 注解
[2] 示例见 Morphia 的 @Id 注解

0 投票
2 回答
2057 浏览

java - 带有 jaxb/annox 和自定义注释的 ClassNotFoundException

我对注释使用场景有些困惑,我希望您能提供意见。

给定以下注释(在同一个项目中与ExistingCustomerValidator类一起定义)包 com.tktserver.constraints;

以及下面的 jxb 定制

当我通过 Maven 生成我的源时,我得到了这个(整个项目由它处理)

其他 JSR-303 注释似乎工作正常。我想知道我是否在这里被循环依赖所困,即先运行 generate-sources,然后编译,因此在 generate-sources 运行时没有可用的 ExistingCustomerMatch 注释类,或者这是否是一个完全不同的野兽。

谢谢, 约安尼斯

0 投票
1 回答
5773 浏览

jaxb - JAXB 解组没有注释的自定义实体

我们有一个需要解组的 xml 文件(转换为 Java 对象)。现在 Java 对象是第三方的,我无法对其进行注释以进行解组。关于如何在没有注释的情况下解组的任何想法。请在下面找到我的代码片段

我收到以下异常。一个无参数构造函数(我知道我可以通过为适配器添加注释来解决这个问题,但我想知道或查看一个示例片段以在没有注释的情况下处理它)

同样,我收到另一条关于接口无法由 JAXB 处理的消息。

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:5 个 IllegalAnnotationExceptions java.sql.Timestamp 没有无参数默认构造函数。此问题与以下位置有关:在 java.sql.Timestamp at public java.sql.Timestamp com.test.Abc.getSomeTimestamp() at com.riteaid.entities.customer.Customer com.test.Def 没有无参数默认构造函数。此问题与以下位置有关:在 com.test.Def...

java.sql.Date 没有无参数默认构造函数。此问题与以下位置有关:at java.sql.Date ... com.test.Ghi 是一个接口,而 JAXB 无法处理接口。此问题与以下位置有关: ... com.test.Ghi 没有无参数默认构造函数。此问题与以下位置有关:..