6

在两台不同的笔记本电脑上使用 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 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 文件夹。

4

5 回答 5

5

我遇到了这个问题,并通过一些故障排除解决了它。

当您尝试执行文件但输入的路径无效时,这实际上是 DOS 错误消息。

C:\Users\me>c:\asdf\foo.exe
The system cannot find the path specified.

Maven 正在尝试执行 javac 来编译您的代码,但没有正确的路径。对于许多设置,您需要在 pom.xml 中检查编译器的路径。转到 cmd 提示符并复制并粘贴它,并确保其路径有效。

对于使用 settings.xml 配置文件在不同 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>

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>
于 2014-05-19T15:45:46.637 回答
1

谢谢大家,现在它的工作:

mvn -X clean install -DskipTests=true

调试模式非常有帮助。

于 2013-06-27T07:07:19.240 回答
0

我遇到了类似的问题,我发现 settings.xml @ Maven_home/conf 或 C:\Users\.m2\settings.xml 指向了错误的 JDK 路径,并更正了解决问题的方法。上面打印的错误消息实际上是“执行 javac 失败”,这意味着 Maven 没有找到 JDK。

谢谢 Hithesh

于 2013-12-11T21:55:26.850 回答
0

我知道这是一个古老的话题,但我认为这个答案将有助于未来的人们:

Java 主页:C:\Installers\Java\jdk1.6.0_43\jre

您使用的是 JRE 而不是 JDK。只需从你的 java home 中删除 "\jre"

于 2015-05-20T17:50:22.847 回答
-1

检查您的 POM 文件并确保您拥有适用于 MVN 和 Java 的正确环境变量

于 2013-10-31T14:06:09.483 回答