詹金斯,指定JAVA_主页

詹金斯,指定JAVA_主页,java,ubuntu,jenkins,java-home,centos,Java,Ubuntu,Jenkins,Java Home,Centos,我使用apt get在我的ubuntu盒上安装了openjdk-6-jdk 在系统信息中,jenkins告诉我Java.Home是/usr/lib/jvm/Java-6-openjdk/jre 然而,当我在Jenkins:“configure system”中将目录指定为JAVA\u HOME时,它会返回错误消息,指出该目录看起来不像jdk目录 它也无法接受我的maven安装 我是否遗漏了一些明显的东西?openjdk-6是一个Java运行时,而不是JDK(例如,包含javac的开发工具包)。安

我使用apt get在我的ubuntu盒上安装了openjdk-6-jdk

在系统信息中,jenkins告诉我Java.Home是
/usr/lib/jvm/Java-6-openjdk/jre

然而,当我在Jenkins:“configure system”中将目录指定为
JAVA\u HOME
时,它会返回错误消息,指出该目录看起来不像jdk目录

它也无法接受我的maven安装


我是否遗漏了一些明显的东西?

openjdk-6
是一个Java运行时,而不是JDK(例如,包含
javac
的开发工具包)。安装
openjdk-6-jdk

Maven也需要JDK


[编辑]安装JDK时,使用
/usr/lib/jvm/java-6-openjdk
查看
java\u HOME
(即不带
jre
部分)。

您的java\u HOME变量必须设置为/usr/lib/jvm/java-6-openjdk,并且必须可供启动Jenkins的用户使用

来自Kyle Strand评论:


截至2015年4月(我认为),Jenkins需要Java7。还请注意,如果系统默认值仍然是java 6,则必须将java二进制路径(java)设置为正确的版本。最后,对于想知道这些变量设置在哪里的人来说,它位于Jenkins网页上列出的配置文件中(例如,对于Debian,它是/etc/default/Jenkins)。

在Jenkins中,尝试将
JAVA_HOME
设置为
/usr/lib/jvm/JAVA-6-openjdk
,以防有类似问题,我为相关软件包使用了默认的sudo apt get安装,以下是正确的设置:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386


在CentOS 6.x和Redhat 6.x系统上,openjdk-devel包包含jdk。如果您熟悉RedHat中使用的-devel模式,这是非常明智的,但如果您正在寻找符合java命名标准的jdk包,则会感到困惑。

从Ubuntu 10.0.4升级到12.0.4,我们的做法是错误的。 我们配置了一个JDK安装(自动配置?),指向/usr/lib/jvm/java-6-openjdk 这不再包含JDK, 更改为/usr/lib/jvm/default-java-fixed,应该可以实现无缝的java-7升级

所以在回答这个问题时:不要在Ubuntu上指定JAVA_HOME。

我看到了 Eclipse>首选项>已安装的JRE>JRE定义 我找到了java_home的目录 所以是
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

在Ubuntu 12.04中,我必须安装 openjdk-7-jdk

然后javac开始工作了

然后我可以使用
/usr/lib/jvm/java-7-openjdk-amd64
作为路径,詹金斯不再抱怨了

使用Jenkins 2(在我的例子中是2.3.2),正确的方法似乎是在管道文件中插入以下内容:

env.JAVA_HOME="${tool 'jdk1.8.0_111'}"
env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"

“jdk1.8.0_111”是最初注册到Jenkins的java配置的名称

下载包rpm包,您可以提供额外的java位置,就像我的系统中有默认的1.7 java一样,但我对Jenkins使用/opt/jdk1.8.0_60/bin/java。打开jenkins startup script/etc/init.d/jenkins并在这里添加额外的java,我在这里添加了/opt/jdk1.8.0_60/bin/java

搜索可用的Java as/usr/bin/Java可能不会指向Jenkins要求的最低版本

候选人=”
/opt/jdk1.8.0_60/bin/java

我只是想为Windows机器添加一个解决方案

  • Windows Server 2008 R2标准,SP1
  • 詹金斯2.89.4
  • Java版本8.171
症状:Jenkins服务开始并立即停止。
Jenkins.wrapper.log
有一行指示到Java的错误路径:

-启动C:\Program Files\Java\jre1.8.0\u 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位置

<env name="JENKINS_HOME" value="%BASE%"/>
<!--
if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
The following value assumes that you have java in your PATH.
-->
<executable>C:\Program Files\Java\jre1.8.0_171\bin\java</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

C:\Program Files\Java\jre1.8.0\U 171\bin\Java
-Xrs-Xmx256m-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle-jar“%BASE%\jenkins.war”--httpPort=8080--webroot=“%BASE%\war”
您也可以使用Windows环境变量,但我没有成功地使用这些变量,而且我认为Java安装程序不会更新这些变量,因此您每次都需要手动更新这些变量

<env name="JENKINS_HOME" value="%BASE%"/>
<!--
if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
The following value assumes that you have java in your PATH.
-->
<executable>%JAVA_HOME%\bin\java</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

%JAVA\u HOME%\bin\JAVA
-Xrs-Xmx256m-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle-jar“%BASE%\jenkins.war”--httpPort=8080--webroot=“%BASE%\war”

这是一个旧线程,但对于需要特定java JDK的更新Jenkins版本(在我的例子中是Jenkins 2.135),以下内容应该会有所帮助:

注意:这是针对Centos 7的,其他发行版可能有不同的目录位置,尽管我相信它们对于ubuntu也是正确的

修改
/etc/sysconfig/jenkins
并设置变量
jenkins\u JAVA\u CMD=“//bin/JAVA”
(需要根访问权限)

● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated)
   Active: active (exited) since Sun 2020-05-31 21:05:30 CEST; 9min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 9055 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)
例如:

JENKINS_JAVA_CMD="/usr/lib/jvm/java-1.8.0-openjdk/bin/java"
重新启动Jenkins(如果Jenkins作为服务运行
sudo服务Jenkins stop
,则
sudo服务Jenkins start

上面修复了我的Jenkins安装在升级到Java10和Jenkins到2.135之后没有启动的问题


对于那些有权配置Jenkins代理的读者,您可以从Jenkins>节点>“代理名称”>配置页面设置
JAVA\u主页


我也面临着同样的问题,对我来说,从jdk12中降级
JAVA_HOME
并不像文章中所说的那样是一个合理的选择。因此,我做了一个试错实验,让Jenkins运行,甚至没有降级
JAVA_HOME

步骤:
  • 打开配置
    $sudo vi/etc/init.d/jenkins
  • ● jenkins.service - LSB: Start Jenkins at boot time
       Loaded: loaded (/etc/init.d/jenkins; generated)
       Active: active (exited) since Sun 2020-05-31 21:05:30 CEST; 9min ago
         Docs: man:systemd-sysv-generator(8)
      Process: 9055 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)
    
  • 评论如下:
  • 介绍了下面提到的行。(注:插入特定的p
     JAVA=`type -p /usr/lib/jdk8/bin/java`
    
    ● jenkins.service - LSB: Start Jenkins at boot time
       Loaded: loaded (/etc/init.d/jenkins; generated)
       Active: active (exited) since Sun 2020-05-31 21:05:30 CEST; 9min ago
         Docs: man:systemd-sysv-generator(8)
      Process: 9055 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)