Jenkins 中的 运行 maven 时出现 ClassNotFoundException

ClassNotFoundException while running maven in Jenkins

我正在尝试 运行 Jenkins 中的专家,但得到:

...
Parsing POMs
Established TCP socket on 7547
[Spider] $ "C:\Program Files\Java\jdk-11.0.1/bin/java" C:\Program Files (x86)\apache-maven-3.6.0\bin -cp "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-agent-1.12.jar;C:\Program Files (x86)\apache-maven-3.6.0\boot\plexus-classworlds-2.5.2.jar;C:\Program Files (x86)\apache-maven-3.6.0/conf/logging" jenkins.maven3.agent.Maven35Main "C:\Program Files (x86)\apache-maven-3.6.0" "C:\Program Files (x86)\Jenkins\war\WEB-INF\lib\remoting-3.27.jar" "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-interceptor-1.12.jar" "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.12.jar" 7547
Error: Could not find or load main class C:\Program
Caused by: java.lang.ClassNotFoundException: C:\Program
ERROR: Failed to launch Maven. Exit code = 1
Finished: FAILURE

我明白了,Jenkins 正试图在 C:\Program 中找到 main class,这当然是错的。但是我找不到在哪里更改此设置。我的脚本在 IntelliJ 中运行良好,但在 Jenkins 中运行不正常。

非常感谢任何帮助。

错误是由于您声明 Maven bin 路径的方式造成的。 C:\Program Files (x86)\apache-maven-3.6.0\bin 中的 C:\Program 之后有一个 space,这就是导致问题的原因。 Jenkins 正在 C:\Program 中寻找您的 Maven bin 文件夹,该文件夹不存在。

您可以通过两种方式解决:

一,尝试将您的 Maven bin 路径放在双引号内:

"C:\Program Files (x86)\apache-maven-3.6.0\bin"

或者,您可以使用更抽象的方法,如下所示:

路径使用这些符号:

对于32位C:\Program Files (x86)\,可以使用c:\progra~2\

对于64位C:\Program Files\,您可以使用c:\progra~1