[英]Jenkins using wrong version of Java
我正在尝试让 Jenkins 在 Windows 机器上工作。 出于测试目的,我在本地主机上安装了 Jenkins。 Java_home
和path
指向 java 14(从 zip 中提取)。 我在我的机器上安装了 jre7 和 jre 8,所以删除它们以消除我之前遇到的类路径错误。 我不得不从 system32 文件夹中手动删除 java.exe javaw.exe。
我从命令提示符运行 ant 构建,它没有任何问题。 现在我在同一台机器上的 Jenkins 中构建相同的项目,我得到以下异常。
我在 Jenkins 中的何处指定 Java 版本,以便它开始使用 JAVA_HOME 和路径?
[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;
要更改默认的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>
您正在使用Winstone应用程序服务器吗? %PATH%
Java二进制文件正确吗?
如果您使用的是Winstone Application Server,则不难获得正确的 Java运行。 您为其指定路径名。 否则,请确保JRE bin目录位于您的%PATH%
。
C:\> \path\to\java\JRE\bin\java -jar jenkins.jar
我必须从system32文件夹中手动删除java.exe javaw.exe。
不! 切勿从Windows删除System32目录中的任何内容。 如果可能,请使用“控制面板”中的软件卸载程序。 Windows使用注册表来注册所有已安装和需要的组件。 如果无法安装默认的Java,则只需将%JAVA_HOME%\\bin
放在C:\\Windows\\System 32
目录之前的%PATH%
我建议使用Jenkins中内置的Winstore应用程序服务器进行测试。 就像我上面显示的那样,只需在控制台窗口中从命令行运行它。 测试之后,您可以将Jenkins作为Windows Service安装 ,因此Jenkins将在启动计算机时自动启动,并且它将在服务帐户下运行,并且如果由于某种原因该服务关闭,它将自行重新启动。
我做了什么:
JAVA_HOME_1.6
, JAVA_HOME_1.7
。 JAVA_HOME
环境变量,该变量指向我在上一步中创建的上述JAVA_HOME版本之一。 PATH
设置为将%JAVA_HOME\\bin
作为PATH中的第一个元素。 如果需要更改使用的Java版本,只需更改JAVA_HOME
定义并打开一个新的Console窗口。 现在,正确的Java版本就在我的书中,我可以像这样启动Jenkins:
C> java -jar jenkins.war
症状:Jenkins服务启动并立即停止。
Jenkins.wrapper.log的一行指示Java的错误路径:-启动C:\\ Program Files \\ Java \\ jre1.8.0_141 \\ bin \\ java -Xrs -Xmx6g -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -jar“ C:\\ Program Files(x86)\\ Jenkins \\ jenkins.war“ --httpPort = 8080 --webroot =” C:\\ Program Files(x86)\\ Jenkins \\ war“
解决方法: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 Jenkins 2.89.4 Java版本8.171
您的%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进行构建是另一回事,这已经在其他地方得到了回答。
我的Jdk15版本仍然位于程序文件中,我必须将其删除然后重新启动系统。 詹金斯(Jenkins)从路径上捡起了jdk14并成功运行。
另一个建议:
如果您在安装Jenkins之后更改了环境(删除了Java,更改了路径等),则它与Jenkins无关,因为它已经处于获取环境的会话中。 重新启动Jenkins,以使这些更改生效并将新环境加载到会话中。
我遇到过同样的问题。 只需安装最新版本的 Java。 重启机器就可以安装了。
检查系统上现有的 jdk 版本。 如果不兼容,请安装兼容的jdk版本并尝试重新安装应用程序。 这应该工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.