我有过这个问题多次。编译器甚至会报告一个错误,因为在我的情况下它并没有这样做,而且Maven以后失败时会出现一些不可理解的错误。
最终,我发现编译器没有很好地处理一些复杂的输入(类似<A extends MyObject<A1,A2>, A1 extends MyObject2<A2>, A2 extends MyObject3>
)。更新JVM可能会解决您的问题,但也可能随着代码的发展而再次出现问题。似乎这些错误在JDK-7中已经消失,但我无法确定。
无论如何,一个解决方案是使用备用的编译器为您的代码(如第谷),你可以像下面这样做在你的pom.xml(无论是在构建 - >插件或建立 - > pluginManagement - >插件):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${compiler.source}</source>
<target>${compiler.target}</target>
<encoding>${source.encoding}</encoding>
<fork>false</fork>
<compilerId>jdt</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-jdt</artifactId>
<version>0.13.0</version>
</dependency>
</dependencies>
</plugin>
如果您使用的是Eclipse和M2E 1.0或以上,你会得到一个错误,但是你可以通过添加下面的代码片段到你的pom.xml(在建摆脱它 - > pluginManagement - >插件):
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
<parameters>
<compilerId>jdt</compilerId>
</parameters>
</pluginExecutionFilter>
<action>
<configurator>
<id>org.eclipse.m2e.jdt.javaConfigurator</id>
</configurator>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
相当难看,问题已上报M2E开发商而T3嘿不认为这是一个优先事项,所以你必须忍受它
安装的Java版本? – Viruzzo 2012-03-19 10:40:38
显示您的JAVA_HOME – Ilya 2012-03-19 10:43:03
尝试启用启用完全调试日志记录的Maven('mvn -e -X clean compile')。然后用你获得的信息更新你的问题。 – sleske 2012-03-19 10:45:38