使用 Java 10 时忽略 Jaxb 包信息

2024-01-10

我正在努力解决这个问题,任何信息将不胜感激。我有一个项目,它已经使用 JAXB 一段时间来从 XML 架构构建 Java 模型并使用该模型。现在它已经在 J​​ava 8 中运行了一些。

但是,我已经升级到 Open JDK 10,当我尝试将 XML 文件解组到 Java 对象中时,出现此错误...

java.lang.IllegalArgumentException: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.minestar.cat.com/namespace/units",
 local:"units"). Expected elements are <{}units>
        at minestar.units.schema.parser.UnitsXmlParser.readXml(UnitsXmlParser.java:31)
        at minestar.units.javagenerator.JavaGeneratorPlugin.execute(JavaGeneratorPlugin.java:41)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:290)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:194)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.minestar.cat.com/namespace/units", local:"units"). Expected
 elements are <{}units>
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:741)
        at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:262)
        at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:257)
        at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:124)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1149)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:574)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:556)
        at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:168)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScanner
Impl.java:613)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScan
nerImpl.java:3058)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:821)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:5
32)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:258)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:229)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:170)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:209)
        at minestar.units.schema.parser.UnitsXmlParser.readXml(UnitsXmlParser.java:29)
        ... 23 more

我正在使用 maven-jaxb2-plugin 生成源,它们看起来不错。我已升级到该插件的最新版本(在撰写本文时,0.14.0)。类生成得很好,并且生成了一个 package-info.java 类并将其编译到生成的 jar 中。有问题的类在顶部看起来像这样

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "dimensions",
    "quantityTypes"
})
@XmlRootElement(name = "units")
public class Units {

    @XmlElement(name = "dimension")
    protected List<Dimension> dimensions;
    @XmlElement(name = "quantityType")
    protected List<QuantityType> quantityTypes;

package-info.java 看起来像这样

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.minestar.cat.com/namespace/units", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package minestar.units.schema;

因为这是 Java 10,所以我已将直接依赖项添加到 javax.xml.bind:jaxb-api:2.3.0、com.sun.xml.bind:jaxb-core:2.3.0 和 com.sun.xml.bind :jaxb-impl:2.3.0。

我尝试将 JAXB 实现从 RI 更改为 Eclipse MOXy,但这没有什么区别。

作为测试,我编辑了上面生成的 Units.java 类文件,将命名空间属性添加到 @XmlRootElement 注释中...

@XmlRootElement(namespace = "http://www.minestar.cat.com/namespace/units", name = "units")
public class Units {

当这个java文件被编译并在下游使用时,XML文件就可以被解析。我没有收到 UnmarshalException。然而,这个源文件是生成的,所以我不能依赖这些更改保持不变。此外,从我从比我自己更有见识的人那里读到的所有内容来看,package-info.class 文件(位于 JAR 文件中)应该使注释中的名称空间值变得不必要。

如果有什么地方我没有正确设置,我将不胜感激您在 Java 10 中使其正常工作的任何帮助。

谢谢你的帮助, 埃德


我在命名空间方面也有类似的问题,在自制插件中使用 JAXB 进行解组。

我正在使用 Java 11。

我解决了将 Maven 升级到3.6.2(maven出现问题3.5.2)。不确定能够解释为什么它有效,但如果它对某人有帮助......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 10 时忽略 Jaxb 包信息 的相关文章

随机推荐

  • $(document).ready有必要吗?

    我在 stackoverflow 上看到了这个问题 但感觉根本没有得到解答 Is document ready必要的 我在页面底部链接了所有的 JavaScript 因此理论上它们都在文档准备好后运行 Is document ready必要
  • React 将事件绑定到许多 dom 元素的有效方法

    因为我们直接将 onClick 处理程序添加到组件中 例如
  • 从父目录导入

    我有这样的路径架构 gt main path init py config init py common py app 1 init py config py index py gt 我希望能够在config py gt from main
  • Rails - 具有多个数据库的同一模型(只读)

    我有多个数据库 其中有相同的表和列名称 但不同的唯一 ID 和行 它不是拥有一个包含所有行的庞大数据库 而是分成不同的数据库 这是我无法改变的 你可以认为这是从不同国家收集相同的数据 但每个国家都有自己的数据库 这些数据库是 只读 的 这意
  • 将结构传递给 dbus 方法的工具?

    我创建了一个守护进程 该守护进程提供了一个 dbus 接口 其方法之一具有如下签名 uu 这是一个由两个组成的结构uint32 fields 是否有一个现成的工具可供我调用该方法并传入结构 dbus send and d feet似乎没有帮
  • 接受多个输入(如 +、- 和数字平方)的计算器。从文本文件中提取信息

    我的代码应该能够在一个文本文件中打印多个不同的方程 导致方程停止并转到下一行的字符 并且 字符取数字的平方 然而 该代码只打印一个方程然后停止 有人告诉我 我需要在已经建立的循环上再循环一次 但我不知道该怎么做 谢谢 INPUT 5 5 4
  • 非类型化 npm 模块的 TypeScript 自定义声明文件

    我正在使用一个名为的 React 组件shiitake https github com bsidelinger912 shiitake从 npm 到我使用 TypeScript 的项目 该库没有 TypeScript 声明 所以我想我应该
  • 有没有更快的方法来检查这是否是有效日期?

    有没有更快的方法来简单地捕获如下所示的异常 try date new DateTime model Date Year model Date Month 7 multiplier 7 dow 2 catch Exception This i
  • Android 从 java 类回调 Activity

    如何从 Java 类中回调 Activity Example public class TestClass String text Test public TestClass Context context startActivity ne
  • C 中哪些运算符的优先级错误?

    In the 介绍 K R C 2E 部分有这样一段 C 与任何其他语言一样 也有其缺陷 一些运算符的优先级错误 这些是哪些运营商 他们的优先顺序怎么错了 Is this https www lysator liu se c dmr on
  • Bash 脚本等待(如果已在运行),然后继续

    我有一个 bash 脚本 一旦进程完成 程序就会调用该脚本 我需要一种方法让 bash 脚本在其自身的另一个实例正在运行时等待退出 然后再继续 我不能只使用锁定文件并退出 因为该脚本不会按任何定期计划再次调用 我不能只使用锁定文件并退出 因
  • 使用转置表进行 Alpha-beta 剪枝,迭代深化

    我正在尝试实现通过换位表增强的 alpha beta 最小 最大修剪 我使用这个伪代码作为参考 http people csail mit edu plaat mtdf html abmem http people csail mit ed
  • NSTableView 上的圆角

    我有一个类似于的自定义视图子类NSBox绘制圆形框背景 问题是 如果我放置一个像NSTableView在盒子视图中 它不会夹到圆角 有没有什么方法可以把角变圆NSTableView及其父滚动视图 我还没有尝试过使用表视图 但尝试过使用其他控
  • 无法从 ASP.NET Core 2.0 中的 IdentityUser 和 IdentityRole 继承

    我正在尝试完成对 NET Core 2 0 的更新 但弹出一些错误 问题 我有两个类 ApplicationRole 和 ApplicationUser 它们从 IdentityRole 和 IdentityUser 继承一些属性 更新到
  • 使用Python进行3D绘图

    我正在尝试用 python 绘制曲面 我有一个包含 N N 值的表 我创建了两个向量 X 和 Y 每个向量都有 N 个元素 当我尝试绘制此图时 出现错误 ValueError total size of new array must be
  • 为什么打字稿不能在这里推断类型参数“T”的“T[key of T]”类型?

    我正在尝试编写一个传递密钥的通用类key对应于构造时一组已知接口之一的键 并且稍后可以传递对象thing和类型安全的访问thing key 这就是我所拥有的 interface AB a string b number interface
  • 为什么 CLLocationManager 委托在 iPhone SDK 4.0 中没有被调用?

    这是我的 AppDelegate 类中的代码 BOOL application UIApplication application didFinishLaunchingWithOptions NSDictionary launchOptio
  • 集成 Liferay 和 Alfresco

    我使用 Liferay 版本 5 2 3 和 Alfresco Community Edition 我想将 Alfresco 与 Liferay 集成 我想将 Alfresco 显示为 Liferay 中的一个 portlet 有人可以告诉
  • Visual Studio 升级建议 2008 / 2010 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Java 10 时忽略 Jaxb 包信息

    我正在努力解决这个问题 任何信息将不胜感激 我有一个项目 它已经使用 JAXB 一段时间来从 XML 架构构建 Java 模型并使用该模型 现在它已经在 J ava 8 中运行了一些 但是 我已经升级到 Open JDK 10 当我尝试将