Hibernate 元模型注释编译错误
我正在将一个项目从使用Java6升级到Java7,并遇到了这个问题。这个项目使用spring和JPA2.0。有些类具有StaticMetaModel注释。在java 6中编译时没有问题,但在java 7中编译时,我看到以下错误:Hibernate 元模型注释编译错误,hibernate,jpa,compilation,java-7,metamodel,Hibernate,Jpa,Compilation,Java 7,Metamodel,我正在将一个项目从使用Java6升级到Java7,并遇到了这个问题。这个项目使用spring和JPA2.0。有些类具有StaticMetaModel注释。在java 6中编译时没有问题,但在java 7中编译时,我看到以下错误: ...\trunk\target\generated-sources\annotations\..\[SOME_NAME]Entity_.java:[8,16] error: duplicate class: [SOME_NAME]Entity_ 基本上,java 7
...\trunk\target\generated-sources\annotations\..\[SOME_NAME]Entity_.java:[8,16] error: duplicate class: [SOME_NAME]Entity_
基本上,java 7正在运行某种注释处理器,将这些类复制到generated sources\annotations文件夹,然后尝试根据此路径进行编译。这将永远不会起作用,因为这些类存在于其他位置,并且是从该其他位置复制到该新位置的。很明显,这就是为什么我会出现“重复类错误”,但我不知道如何解决这个问题
Java6似乎忽略了这个问题
这是我的pom文件中我认为可能与之相关的部分
<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>
org.apache.maven.plugins
maven编译器插件
2.3.2
1.7
1.7
下面的内容在这个插件中被注释掉了,但是当添加它的时候,它没有任何我能识别的效果
<compilerArguments>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</compilerArguments>
org.hibernate.jpamodelgen.jpametamodelenticyprocessor
如果我发布了一个问题,然后总能马上找到解决方案,那我一定会成功。希望这能帮助其他可能遇到这种情况的人
显然,这段代码很旧,出于某种原因,@StaticMetaModel类是手动生成的,并作为项目的一部分包含在src文件夹路径中。可能这是Java6的一个bug,它无法识别。/生成的代码/注释
下的源代码。我只需删除src文件夹路径中的副本,一切正常
也许其他更有经验的人可以评论并准确描述注释处理器在JPA/hibernate中的工作方式,但基本上它似乎是在检查带有@Entity的类,然后使用@StaticMetaModel注释创建它们的.java版本,然后将它们放入
。/生成的代码/注释
文件夹中。如果我尝试在Intellij中运行compile,一开始会失败,但是如果我在maven中运行compile阶段,然后在Intellij中编译,一切都会像预期的那样好。我也看到这种情况是由于类路径问题(hibernate JAR不在tomcat的类路径中)