Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么jaxb会记录;未找到<;的XmlSchema注释;我的包裹名称>&引用;获取JAXBContext实例时?_Java_Xml_Maven_Jaxb_Xsd - Fatal编程技术网

Java 为什么jaxb会记录;未找到<;的XmlSchema注释;我的包裹名称>&引用;获取JAXBContext实例时?

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

我有一个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
  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")