编译错误:执行javac失败,但无法解析错误
我在启动像mvn clean compile
这样的Hudson作业时遇到了跟随错误。编译错误:执行javac失败,但无法解析错误
[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
你对这个问题有什么理由吗?
我有过这个问题多次。编译器甚至会报告一个错误,因为在我的情况下它并没有这样做,而且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嘿不认为这是一个优先事项,所以你必须忍受它
你遇到了一个编译器错误。目前还不清楚它可能是哪个bug,但很有可能通过升级到更高版本的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。)
使用jdk 1.8_4X,我升级到1.8_51,但我仍然看到这个错误:'执行javac失败,但无法解析错误: /bin/sh:c:/progra~1/java/jdk1.6.0_24/bin/javac:没有这样的文件或目录# – 2015-07-14 19:43:57
@KevinMeredith - 看看错误消息。仔细阅读。为什么它谈论一个JDK 1.6安装?你的哈德森配置中的东西是指一个旧的Java安装(我猜测)不再存在。找到它发生的地方,你有95%的人解决了这个问题。 – 2015-07-14 22:33:14
安装的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