Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Hibernate 元模型注释编译错误_Hibernate_Jpa_Compilation_Java 7_Metamodel - Fatal编程技术网

Hibernate 元模型注释编译错误

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

我正在将一个项目从使用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正在运行某种注释处理器,将这些类复制到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的类路径中)