Java 为什么jaxb会记录;未找到<;的XmlSchema注释;我的包裹名称>&引用;获取JAXBContext实例时?
我有一个xsd文件,当使用jaxb-2 maven插件编译时,它会生成java源代码。 我的xsd的标题是:Java 为什么jaxb会记录;未找到<;的XmlSchema注释;我的包裹名称>&引用;获取JAXBContext实例时?,java,xml,maven,jaxb,xsd,Java,Xml,Maven,Jaxb,Xsd,我有一个xsd文件,当使用jaxb-2 maven插件编译时,它会生成java源代码。 我的xsd的标题是: <schema targetNamespace="example.company.com" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:prefix="example.company.com"> 我在控制台中收到数百条错误消息,如下所示: <schema
<schema targetNamespace="example.company.com"
elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:prefix="example.company.com">
我在控制台中收到数百条错误消息,如下所示:
<schema
xmlns=...
xmlns:po=....
targetNamespace="http://www.w3.org/2001/XMLSchema"
>
未找到com.company.example的XmlSchema注释
在所有这些错误消息之后,封送处理工作正常。不过,我想消除这些错误
jaxb2 maven插件在我的pom中定义如下:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.3.1</version>
<dependencies>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.1.13</version>
</dependency>
<dependency>
<groupId>net.sourceforge.ccxjc</groupId>
<artifactId>cc-xjc-plugin</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<arguments>-enableIntrospection -verbose</arguments>
<schemaDirectory>${basedir}/src/main/xsd</schemaDirectory>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
<packageName>com.company.example</packageName>
<verbose>true</verbose>
<failOnNoSchemas>true</failOnNoSchemas>
<clearOutputDir>false</clearOutputDir>
<arguments>-copy-constructor</arguments>
<extension>true</extension>
</configuration>
</plugin>
org.codehaus.mojo
jaxb2 maven插件
1.3.1
com.sun.xml.bind
jaxbxjc
2.1.13
net.sourceforge.ccxjc
cc xjc插件
2
生成源
xjc
-启用内省-详细
${basedir}/src/main/xsd
${basedir}/src/main/java
com.company.example
真的
真的
假的
-复制构造函数
真的
您没有将包映射到命名空间“”。为此,请将标题设置为:
<schema
xmlns=...
xmlns:po=....
targetNamespace="http://www.w3.org/2001/XMLSchema"
>
有关XmlSchema的更多信息,请参阅以下文档:似乎没有编译与XML架构中的其他模型文件一起生成的package-info.java(包含
@XmlSchema
注释)文件
更新
我正在运行OSGi并使用JavaSE
您应该确保在清单中导入
javax.xml.bind
包。它们可能是OSGi环境中类的ClassLoader
问题。我不明白。此链接似乎表明targetNamespace没有按您所想的那样使用。“原则上,名称空间没有任何意义,但一些公司使用存储架构的url作为targetNamespace,因此一些XML解析器将使用此url作为架构的提示路径,例如:targetNamespace=”,但以下内容同样有效targetNamespace=“我的常见类型”。“我认为情况并非如此。在我的目标目录中生成了package-info.java的类文件。@JustinWiseman-您是否在java SE环境中运行,在应用程序服务器中,还是OSGi环境?我正在运行OSGi并使用Java SEI将javax.xml.bind添加到包含xsd和jaxb上下文加载代码的包中maven bundle插件中列出的导入中。这并没有造成明显的区别。我想我已经解决了这个问题。我们使用的是JAXB的可移植版本。此链接表示android不允许包级注释。作者说他找到了一种程序化的方式来表示这些注释。我会调查的。谢谢你的帮助。我相信,如果我们一直使用普通JAXB,您的建议就会解决问题。
@javax.xml.bind.annotation.XmlSchema (namespace = "http://www.w3.org/2001/XMLSchema")