当我启动像mvn clean compile
这样的Hudson作业时,我遇到了跟随错误。
[INFO] Compiling 1541 source files to /users/applis/33g/ad33gwas/.hudson/jobs/sonar facade-commande/workspace/facade-commande/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
An exception has occurred in the compiler (1.5.0_12). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError
你对这个问题有什么理由吗?
答案 0 :(得分:4)
您遇到了编译器错误。目前尚不清楚它可能是哪个错误,但很有可能通过升级到更高版本的JDK来修复它。
(你显然正在运行java 1.5.0_u12,这很古老。最后一个免费提供的Java 1.5补丁版本是java 1.5.0_u22。这是最新的1.5版本(到1.5.0._u34)可用于订阅Java for Business的人。或者,您可以升级到Java 1.6或1.7。)
答案 1 :(得分:0)
我有好几次这个问题。你已经很幸运了,编译器甚至报告了一个错误,因为在我的情况下它没有报错,而Maven后来因为一些不可理解的错误而失败。
最终,我发现编译器没有很好地处理一些复杂的类型(类似<A extends MyObject<A1,A2>, A1 extends MyObject2<A2>, A2 extends MyObject3>
)。更新JVM可能会解决您的问题,但随着代码的发展,也可能会再次遇到问题。似乎这些错误在JDK-7中已经消失,但我无法确定。
无论如何,一种解决方案是为你的代码使用备用编译器(比如tycho),你可以在你的pom.xml中这样做(在build - &gt; plugins或build - &gt; pluginManagement-- &GT;插件):
<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中来解决此问题(在build - &gt; pluginManagement - &gt; plugins中) ):
<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开发人员报告了这个问题,但他们并不认为这是优先事项,所以你必须忍受它