java - 是否有我可以引用的可能的 IllegalAnnotationExceptions 列表?

标签 java xml jaxb

我的任务是获取现有的对象结构并将其转换为 XML 我是 JAXB 新手,希望使用它。但是,当我尝试编码数据时,如果抛出以下异常,“3 个 IllegalAnnotationExceptions 计数”

过去有 20 多个异常(exception)情况。然而,我能够研究并找出哪些未遵循的做法导致了错误。但是,我似乎找不到这三个错误。是否有此异常的可能原因的列表?我会显示代码,但是这些错误可能跨越 22 个类。

提前谢谢您。

编辑

下面是错误。该代码是从命令行运行程序执行的,因此请参阅“Caused by:”异常。确实有大量的代码需要梳理,在这里发布是不切实际的。这就是为什么我要求提供此异常的可能触发因素的引用列表。这样的列表存在吗?

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:735) [spring-boot-1.5.12.RELEASE.jar:1.5.12.RELEASE]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:716) [spring-boot-1.5.12.RELEASE.jar:1.5.12.RELEASE]
    at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:703) [spring-boot-1.5.12.RELEASE.jar:1.5.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:304) [spring-boot-1.5.12.RELEASE.jar:1.5.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.12.RELEASE.jar:1.5.12.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.12.RELEASE.jar:1.5.12.RELEASE]
    at com.xdome.XdomeApplication.main(XdomeApplication.java:14) [classes/:na]
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 3 counts of IllegalAnnotationExceptions
    at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:106) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:489) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:319) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1170) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:145) ~[jaxb-impl-2.2.3-1.jar:2.2.3]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_144]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247) ~[na:1.8.0_144]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234) ~[na:1.8.0_144]
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:441) ~[na:1.8.0_144]
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641) ~[na:1.8.0_144]
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584) ~[na:1.8.0_144]
    at com.xdome.XMLGenerator.run(XMLGenerator.java:27) ~[classes/:na]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:732) [spring-boot-1.5.12.RELEASE.jar:1.5.12.RELEASE]
    ... 6 common frames omitted

最佳答案

在解决这个问题之后,我想我应该来晒晒太阳并留下一些快速的想法。不幸的是,这看起来像是一个普遍错误。据我所知,这个异常没有错误的集体列表,因为这意味着当其他所有方法都失败时,这是一个包罗万象的异常。但是,以下是我在处理项目时遇到的一些事项:

使用 JAXB 时,请确保您希望编码的所有所需类都有一个默认的空参数构造函数。我假设 JAXB 只需要做一些基本的 POJO 操作,如果没有无参数构造函数,这是不可能的。

public class A {

    public A(){}

}

我遇到的另一个问题涉及继承。以前的许多对象都是从包含公共(public)字段的抽象类继承的。然而,这个抽象类并不是 XML 层次结构的直接一部分。将抽象类包含为父类(super class)似乎会引发 IllegalAnnotationsException。因此,当类 B 是 XML 结构的一部分时,请勿执行以下操作:

public abstract class A {
    ...
}


public class B extends A {

}

最后,滥用 JAXB 注释可能会引发 IllegalAnnotationsException。当出现上述异常时,请仔细检查以确保您注释了预期的字段和类。由于我本人是 JAXB 新手,因此遇到了这个问题。您可以在 Oracle 网站上找到 JAXB 文档:https://docs.oracle.com/javase/8/docs/technotes/guides/xml/jaxb/index.html

我希望这些信息至少能帮助一些人。至少这是最后一个没有答案的堆栈溢出问题。

关于java - 是否有我可以引用的可能的 IllegalAnnotationExceptions 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55857475/

相关文章:

Java - 替换 url 中的主机?

java - leetcode 437题为什么子节点也应用DFS?

JAVA解密错误: Needs Input to be multiple of 16

java - 生成的 PDF 报告中缺少几个土耳其字母

Python:非侵入式处理 XML 文件

java - 自定义组件未在 Android Studio 的编辑模式下显示

c# - 将 XML 元素与 ListBox 所选项目匹配 - C#

java - Xjc 在 xmlns :xsi and xsi:noNamespaceSchemaLocation 的 XSD 属性定义上抛出 "Invalid attribute value, not a valid NCName"

java - 无法在 Maven 环境中从 JAXB 生成类

java - 如何使用 Jersey 将带注释的对象列表从客户端传递到服务器