【问题标题】:Jenkins using wrong version of JavaJenkins 使用了错误的 Java 版本
【发布时间】:2014-07-25 18:40:45
【问题描述】:

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

我从命令提示符运行 ant build,它没有任何问题。现在我在同一台机器上的 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;

【问题讨论】:

  • 你的系统环境变量中Java_home和path的值是多少?
  • @Papsicle 更新了 java home 和路径值
  • Jenkins 可以访问路径吗?看看this
  • @Papsicle 我不确定如何验证。我尝试在 jenkins 配置系统中设置 JAVA_HOME。那也不好用

标签: java ant jenkins


【解决方案1】:

要更改默认的 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>

【讨论】:

    【解决方案2】:

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

    如果您使用的是 Winstone 应用服务器,让 正确 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 放在您的 %PATH%C:\Windows\System 32 目录之前

    我建议使用嵌入在 Je​​nkins 中的 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

    【讨论】:

      【解决方案3】:

      症状: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 标准版,SP1 詹金斯 2.89.4 Java 版本 8.171

      【讨论】:

        【解决方案4】:

        您的 %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 进行构建是另一回事,这在其他地方已被询问和回答。

        【讨论】:

          【解决方案5】:

          我的程序文件中仍然存在 Jdk15 版本,我必须删除它然后重新启动系统。 Jenkins从路径中捡起jdk14,运行成功。

          【讨论】:

            【解决方案6】:

            另一个建议:

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

            【讨论】:

              【解决方案7】:

              我有同样的问题。 只需安装最新版本的 Java。重启机器就可以安装了。

              https://www.java.com/en/download/

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-05-22
                • 2018-09-30
                • 2015-02-09
                • 2010-10-31
                • 2022-12-05
                • 2014-06-30
                • 2019-05-07
                • 1970-01-01
                相关资源
                最近更新 更多