首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MetaModel注释编译错误

MetaModel注释编译错误
EN

Stack Overflow用户
提问于 2014-03-19 20:03:38
回答 1查看 3.8K关注 0票数 0

我正在将一个项目从使用java 6升级到java 7,并遇到了这个问题。这个项目使用spring和JPA2.0。有一些类具有StaticMetaModel注释。当我用java 6编译时,没有问题,但是当我用java 7编译时,我会看到以下错误:

代码语言:javascript
复制
...\trunk\target\generated-sources\annotations\..\[SOME_NAME]Entity_.java:[8,16] error: duplicate class: [SOME_NAME]Entity_

基本上,java 7正在运行某种批注处理器,通过这些类将这些类复制到generated\ annotation文件夹中,然后尝试针对这个路径进行编译。这将永远无法工作,因为这些类存在于其他地方,并且被从另一个位置复制到这个新位置。显然这就是我得到“重复类错误”的原因,但我不知道如何解决这个问题。

Java 6似乎忽略了这个问题。

这里是我的pom文件的一部分,我认为这可能与它有关。

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

下面的评论在这个插件中被删除了,但是当添加它时,我无法识别它的影响。

代码语言:javascript
复制
<compilerArguments>
    <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</compilerArguments>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-19 20:35:30

如果我发了一个问题,然后总是在那里找到解决办法,我就不会失败。希望这能帮助其他可能遇到这种情况的人。

显然,这段代码是旧的,出于某种原因,@StaticMetaModel类是手动生成的,并作为项目的一部分包含在src文件夹路径中。也许这是java 6的一个bug,使得它无法识别../generated-code/annotations下的源代码。我只需删除src文件夹路径中的副本,一切都正常。

也许有更多经验的其他人能够准确地评论和描述注释处理器在JPA/hibernate中的工作方式,但基本上它似乎是在检查带有@Entity的类,然后使用@StaticMetaModel注释创建它们的.java版本,然后将它们放在../generated-code/annotations文件夹中。如果我尝试在Intellij中运行编译,那么它一开始就会失败,但是如果我在maven中运行编译阶段,然后在Intellij中编译,一切都很好。

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

https://stackoverflow.com/questions/22516895

复制
相关文章

相似问题

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