gpt4 book ai didi

maven - 导入命名空间 - 无法将名称解析为 (n) 'type definition' 组件

转载 作者:行者123 更新时间:2023-12-04 19:46:54 24 4
gpt4 key购买 nike

上下文:我正在使用 maven-jaxb 插件从 xsd 文件生成 java 类。我所有的 .xsd 文件都在一个位置 - src/main/resource 目录。

问题:当 xsd 不引用/导入具有不同目标命名空间的其他 xsd 时,一切正常。但是,当下面的 xsd(使用 targetNamespace="http://www.companyA.com/someservice")从不同的命名空间 (namespace="http://www.companyB.com/") 导入另一个 xsd filename.xsd 时,我收到上述错误:无法将名称 xxx 解析为(n)“类型定义”组件。

编辑:当前 xsd 文件中的元素名称为“entityName”,其类型为“companyB:entityName”(即)名称相同。

然后我尝试从命令行对该文件调用 xjc,这会正确生成 Java 类。我还确保在 Eclipse 中,我能够在“type="companyCdm:entityName"上按 ctrl 单击/检查源代码,这会正确打开 filename.xsd 文件。但是由于某种原因,maven 无法访问它。

问题:我错过了什么?为什么这种情况(2 个命名空间)与处理单个命名空间不同?

这是我的 XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.companyA.com/someservice"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:companyB="http://www.companyB.com/version"
targetNamespace="http://www.companyA.com/someservice"
elementFormDefault="qualified" attributeFormDefault="qualified">

<xsd:import namespace="http://www.companyB.com/version" schemaLocation="filename.xsd" />

<xsd:element name="MyName" type="MyType" />

<xsd:complexType name="MyType">
<xsd:annotation>
<xsd:documentation>
A list
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="entityName" type="companyB:entityName" maxOccurs="1" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

最佳答案

好的,想出了解决方法:

我将所有相关的 xsd(有问题的 xsd 引用)以及一堆其他未使用的 xsd 移动到一个单独的文件夹,然后使用 maven 重新生成代码 - 它现在可以工作了。似乎与其他未使用的 xsd 之一存在一些命名空间冲突,我尚未指出具体的一个。

关于maven - 导入命名空间 - 无法将名称解析为 (n) 'type definition' 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405921/

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