首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"http://annox.dev.java.net“自定义需要"-Xannotate”开关

"http://annox.dev.java.net“自定义需要"-Xannotate”开关
EN

Stack Overflow用户
提问于 2014-10-17 17:19:21
回答 3查看 7.6K关注 0票数 3

我正试图通过hyperjaxb运行一个真正的模式。我已经使用jaxb反复测试了这个模式,并且jaxb每次都正确地导入这个模式。但是,当我试图让hyperjaxb从同一个模式生成hibernate注释的java类时,我会得到以下错误:

代码语言:javascript
复制
[ERROR] Error while parsing schema(s).Location [ file:/C:/path/to/src/main/resources/schema.xsd{4,32}].
org.xml.sax.SAXParseException; systemId: file:/C:/path/to/src/main/resources/schema.xsd;  
lineNumber: 4; columnNumber: 32; 
Using "http://annox.dev.java.net" customizations requires the "-Xannotate" switch 
to enable this plug-in.

我在googled上搜索了这个错误消息,并阅读了关于它的其他帖子,但是没有找到任何清晰的说明来解决它。我发现的最接近的是这篇文章,它说是is activated by the -Xannotate command-line argument插件。

我阅读了此链接,但是在xsd文件中添加以下内容并不能消除错误,这可能是因为xsd在任何地方都不使用jaxb前缀。

代码语言:javascript
复制
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.1" 
xmlns:annox="http://annox.dev.java.net" 
jaxb:extensionBindingPrefixes="annox"

我已经上传了一个包含所有相关材料的压缩文件,以快速再现问题到此链接。它是一个项目的zip文件,包括预期的模式。要重现问题,只需将命令行导航到解压缩项目的根目录,然后键入mvn clean install来再现错误。

如何解决此错误?

编辑:

我已经尝试过在pom.xml中添加以下插件配置,但到目前为止还没有成功。

代码语言:javascript
复制
<args>
    <arg>-Xannotate</arg>
</args>  

第二次编辑:

我向pom.xml添加了@lexicore的建议,但结果是一个null pointer exception,您可以阅读单击此链接。为了促进其他人更容易地使用hyperjaxb,我包括了完整的当前pom.xml 在这个链接上。再加上这个修改后的pom.xml和上面的压缩文件,就足以在几分钟内重新创建这个问题了。这是配置问题还是bug?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-17 18:40:00

您应该删除这个插件<artifactId>maven-hyperjaxb3-plugin</artifactId>

代码语言:javascript
复制
        <plugin>
            <groupId>org.jvnet.hyperjaxb3</groupId>
            <artifactId>maven-hyperjaxb3-plugin</artifactId>
            <version>0.6.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <extension>true</extension>
                <roundtripTestClassName>RoundtripTest</roundtripTestClassName>
            </configuration>
        </plugin>
票数 2
EN

Stack Overflow用户

发布于 2014-10-17 19:43:47

为了新用户的利益,我现在将回答这个具体问题。

如果您看到报告的错误:

代码语言:javascript
复制
Using "http://annox.dev.java.net" customizations requires the "-Xannotate"
switch to enable this plug-in.

这意味着,嗯,你必须包括"-Xannotate“开关来启用这个插件。请参阅jaxb2-annotate-plugin首页上的文件

代码语言:javascript
复制
<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <configuration>
        <extension>true</extension>
        <args>
            <arg>-Xannotate</arg>
        </args>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2_commons</groupId>
                <artifactId>jaxb2-basics-annotate</artifactId>
            </plugin>
            <!-- Add the dependencies with your annotations as 'plugins' below -->
            <plugin>
                <groupId>org.jvnet.jaxb2_commons</groupId>
                <artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
            </plugin>
        </plugins>
    </configuration>
</plugin>

看到-Xannotate开关了吗?就是这个。

jaxb2-annotate-plugin也可以与maven-hyperjaxb3-plugin一起使用。这是来自一个例子Hyperjaxb试验

代码语言:javascript
复制
        <plugin>
            <groupId>org.jvnet.hyperjaxb3</groupId>
            <artifactId>maven-hyperjaxb3-plugin</artifactId>
            <configuration>
                <postArgs>
                    <arg>-Xannotate</arg>
                </postArgs>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-search</artifactId>
                    <version>3.0.0.GA</version>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-annotations</artifactId>
                    <version>3.5.6-Final</version>
                </dependency>
            </dependencies>
        </plugin>

(您不需要包含jaxb2-annotate-plugin,因为maven-hyperjaxb3-plugin已经自动包含了它。)

票数 3
EN

Stack Overflow用户

发布于 2014-10-17 19:36:33

考虑一下我在上一个问题中必须添加到Xstian的回答中的警告:

警告 这个解决方案根本不使用Hyperjaxb。这个解决方案使用jaxb2-annotate-plugin添加JPA注释。这是一个通常由Hyperjaxb执行的任务。 也就是说,如果您选择使用此解决方案,则完全脱离Hyperjaxb轨道。如果使用Hyperjaxb,则不需要jaxb2-annotate-plugin,反之亦然,如果使用jaxb2-annotate-plugin添加注释,则不需要Hyperjaxb。 但是,请注意,jaxb2-annotate-plugin只执行非常肤浅的任务,即添加您在绑定文件中显式配置的注释。另一方面,Hyperjaxb对您的模式模型进行了非常深入和彻底的分析,并自动生成合理的JPA注释。在某些情况下,Hyperjaxb甚至必须增加生成的JAXB代码,使其与JPA兼容。这些特性超出了jaxb2-annotate-plugin的范围。

因此,如果任务是在模式派生类中生成JPA注释,则可以使用Hyperjaxb或jaxb2-annotate-plugin。同时做这两件事是完全错误的。

我已经将这个特定的问题转述给了annox,因为它是正确的标签。安诺克斯jaxb2-annotate-plugin后面的库,annox标记通常与像您这样的jaxb2-annotate-plugin-related问题相关联。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26430199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档