Maven 执行javac失败:编译失败
在两台不同的笔记本电脑上使用maven构建相同的项目。一方面运行良好,另一方面显示错误 状态:两个系统的配置相同Maven 执行javac失败:编译失败,maven,Maven,在两台不同的笔记本电脑上使用maven构建相同的项目。一方面运行良好,另一方面显示错误 状态:两个系统的配置相同 C:\Users\admin>mvn -version Apache Maven 2.2.1 (r801777; 2009-08-07 00:46:01+0530) Java version: 1.6.0_43 Java home: C:\Installers\Java\jdk1.6.0_43\jre Default locale: en_IN, platform encodi
C:\Users\admin>mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-07 00:46:01+0530)
Java version: 1.6.0_43
Java home: C:\Installers\Java\jdk1.6.0_43\jre
Default locale: en_IN, platform encoding: Cp1252
OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"
使用的命令:mvn clean install-DskipTests=true
错误:
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 3 source files to C:\Users\admin\HeliosWorkspace\...\target\classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
Failure executing javac, but could not parse the error:
The system cannot find the path specified.
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.BuildFailureException: Compilation failure
Failure executing javac, but could not parse the error:
The system cannot find the path specified.
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor
.java:715)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifec
ycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.
java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultL
ifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleE
xecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java
:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
Failure executing javac, but could not parse the error:
The system cannot find the path specified.
我甚至尝试过删除所有内容,比如再次创建.m2文件夹。谢谢大家,现在它可以工作了:
mvn -X clean install -DskipTests=true
调试模式非常有用。检查您的POM文件,确保为MVN和Java提供了正确的环境变量我也遇到了类似的问题,我发现settings.xml@Maven_home/conf或C:\Users\.m2\settings.xml指向了错误的JDK路径,纠正了该问题。上面打印的错误消息实际上是“failureexecutingjavac”,这意味着Maven没有找到JDK 谢谢
Hithesh我遇到了这个问题,并通过一些故障排除解决了它 当您试图执行文件但输入无效路径时,这实际上是一条DOS错误消息
C:\Users\me>c:\asdf\foo.exe
The system cannot find the path specified.
Maven正在尝试执行javac来编译代码,但没有正确的路径。对于许多设置,您需要在pom.xml中检查编译器的路径。转到cmd提示符,复制并粘贴它,并确保其路径有效
对于使用settings.xml profiles在不同JAVA_home上定义一些全局配置的设置,例如下面的示例,请确保每个变量中的路径正确,具有这些变量的配置文件处于活动状态(activeProfile标记可以确保这一点),并且在pom.xml中正确引用
<!-- settings.xml -->
<profiles>
<profile>
<id>compiler-versions</id>
<properties>
<JAVA_1_5_HOME>C:/java/jdk1.5.0_16</JAVA_1_5_HOME>
<JAVA_1_6_HOME>C:/java/jdk1.6.0_43</JAVA_1_6_HOME>
<JAVA_1_7_HOME>C:/java/jdk1.7.0_55</JAVA_1_7_HOME>
</properties>
</profile>
</profiles>
<activeProfiles>
<!-- make the profile active all the time -->
<activeProfile>compiler-versions</activeProfile>
</activeProfiles>
编译器版本
C:/java/jdk1.5.0_16
C:/java/jdk1.6.0_43
C:/java/jdk1.7.0_55
编译器版本
pom.xml代码段:
<!-- pom.xml -->
<!-- ... -->
<build>
<configuration>
<verbose>false</verbose>
<fork>true</fork>
<executable>${JAVA_1_6_HOME}/bin/javac</executable>
<compilerVersion>1.6</compilerVersion>
<meminitial>256m</meminitial>
<source>1.6</source>
<target>1.6</target>
<!--encoding>UTF-8</encoding-->
<maxmem>512m</maxmem>
</configuration>
</build>
假的
真的
${JAVA_1_6_HOME}/bin/javac
1.6
256m
1.6
1.6
512m
我知道这是一个古老的话题,但我认为这个答案将对未来的人们有所帮助:
Java主页:C:\Installers\Java\jdk1.6.0\U 43\jre
您使用的是JRE而不是JDK。只需从java home中删除“\jre”Execute
mvn-X clean install-DskipTests=true
即可查看调试输出并粘贴到此处。检查java_home变量并检查编译器插件是否配置正确。能否更新java_home变量的值?@JyotiPrakash请解释调试模式如何帮助您,我也有同样的问题。