我正在将一个项目从使用 java 6 升级到 java 7 并遇到了这个问题。该项目使用 spring 和 JPA 2.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 正在运行某种注释处理器,将这些类复制到 generate-sources\annotations 文件夹,然后尝试针对该路径进行编译。这永远不会起作用,因为这些类存在于其他地方并且从那个其他位置复制到这个新位置。显然这就是我收到“重复类错误”的原因,但我不知道如何解决这个问题。
Java 6 似乎忽略了这个问题。
这是我认为可能与它有关的 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>
此插件中已将以下内容注释掉,但添加后我无法识别。
<compilerArguments>
<processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</compilerArguments>