Jenkins使用错误版本的Java

时间:2014-07-25 18:40:45

标签: java ant jenkins

我试图让Jenkins在Windows机器上工作。出于测试目的,我在我的localhost上安装了Jenkins。 Java_homepath指向java 14(从zip中提取)。我在我的机器上安装了jre7和jre 8,因此删除它们以摆脱我之前的类路径错误。我不得不从system32文件夹手动删除java.exe javaw.exe。

我从命令提示符运行ant build,它没有任何问题。现在我在Jenkins中构建同一个项目也在同一台机器上,我得到以下异常。

我在哪里指定Jenkins中的Java版本,以便它开始使用JAVA_HOME和Path?

[CommonUtilities] $ cmd.exe /C '"ant.bat -file exported_build.xml build && exit %%ERRORLEVEL%%"'
Error: could not open `C:\Program Files (x86)\Java\jre7\lib\i386\jvm.cfg'
Build step 'Invoke Ant' marked build as failure
Finished: FAILURE

更新:

>echo %JAVA_HOME%
C:\tools\bea\jdk142_19

>echo %PATH%
C:\TDS\Ora\product\11.2.0\client_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS
\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\W
indowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\tools\bea\jdk142_08\b
in;C:\tools\Build\ant\apache-ant-1.8.2\bin;

6 个答案:

答案 0 :(得分:2)

要更改默认的Jenkins JRE,请编辑配置文件%JENKINS_HOME%/ jenkins.xml ,并使用您首选的JRE路径修改<executable>标记,如下所示:

<!-- <executable>%BASE%\jre\bin\java</executable> -->
<executable>C:\Program Files\Java\jdk1.8.0_65\jre\bin\java</executable>

答案 1 :(得分:1)

您使用的是Winstone应用程序服务器吗?是%PATH%中的正确java二进制文件吗?

如果您正在使用Winstone应用服务器,那么运行正确的 java并不难。你给它路径名称。否则,请确保JRE bin目录位于%PATH%

 C:\> \path\to\java\JRE\bin\java -jar jenkins.jar
  

我不得不从system32文件夹手动删除java.exe javaw.exe。

Noooooooo!切勿从Windows中删除System32目录中的任何内容。如果可能,请使用“控制面板”中的“软件卸载程序”。 Windows使用注册表来注册已安装和需要的所有组件。如果您无法安装默认Java,只需将%JAVA_HOME%\bin放在%PATH%目录前的C:\Windows\System 32

我建议使用Jenkins中嵌入的Winstore应用程序服务器进行测试。只需在我上面显示的控制台窗口中从命令行运行它。一旦你测试它,你可以install Jenkins as a Windows Service,所以Jenkins会在你启动你的机器时自动启动,并且它会在服务帐户下运行,如果由于某种原因服务中断,它会重新启动。


我做了什么:

  • 我将所有各种Java JDK(我从Oracle下载)安装到C:\ Java中。每个JDK版本都有一个单独的目录。
  • 在我的系统控制面板的环境变量部分中,我为每个JAVA_HOME定义了环境变量。我有JAVA_HOME_1.6JAVA_HOME_1.7
  • 然后我定义了一个JAVA_HOME环境变量,该变量指向我在上一步中创建的上述JAVA_HOME版本之一。
  • 然后我将环境PATH设置为%JAVA_HOME\bin作为PATH中的第一个元素。如果我需要更改我正在使用的Java版本,我只需更改JAVA_HOME定义并打开一个新的控制台窗口。
  • 现在,正确的Java版本在我的道路上,我可以像这样启动Jenkins:

    c取代; java -jar jenkins.war

答案 2 :(得分:1)

症状:Jenkins服务启动并立即停止。

Jenkins.wrapper.log有一行指示Java的错误路径: - 启动C:\ Program Files \ Java \ jre1.8.0_141 \ bin \ java -Xrs -Xmx6g -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -jar&#34; C:\ Program Files(x86)\ Jenkins \ jenkins.war&#34; --httpPort = 8080 --webroot =&#34; C:\ Program Files(x86)\ Jenkins \ war&#34;

修复:Jenkins在jenkins.xml中对路径进行了硬编码。将路径更改为新的Java位置。在我的情况下,我改变了: C:\ Program Files \ Java \ jre1.8.0_141 \ bin \ java 至 C:\ Program Files \ Java \ jre1.8.0_171 \ bin \ java

你也可以使用Windows环境变量,但我没有成功,我不认为Java安装程序更新了这些,所以你每次都需要手动更新它

Windows Server 2008 R2 Standard,SP1 詹金斯2.89.4 Java版本8.171

答案 3 :(得分:0)

您的%JAVA_HOME%和您的%PATH%环境变量中唯一看起来像Java的东西设置为'C:\ tools \ bea \ jdk142_19'或'C:\ tools \ bea \ jdk142_08',我认为这些将是java 1.4.2。将系统环境变量更改为指向Program Files目录中的JDK或JRE安装,Jenkins将开始使用该JRE。让Jenkins使用特定的JDK进行构建是另一回事,已在其他地方提出并回答。

答案 4 :(得分:0)

我有Jdk15版本仍然在程序文件中,我不得不删除它然后重新启动我的系统。詹金斯从路径中拿起了jdk14并成功跑了。

答案 5 :(得分:0)

另一个建议:

如果您在安装Jenkins(删除Java,更改路径等)后更改了环境,那么它与Jenkins无关,因为它已经在它获得环境的会话中。重新启动Jenkins以使这些更改生效并将新环境加载到会话中。