詹金斯在 linux 中无法识别我的 java

Posted

技术标签:

【中文标题】詹金斯在 linux 中无法识别我的 java【英文标题】:Jenkins not recognizing my java in linux 【发布时间】:2015-01-27 10:48:16 【问题描述】:

我正在使用 OpenSuse 并尝试使用 rpm 安装 Jenkins。我在这方面有很多麻烦:

aquarius:/home/jeevan/Downloads # service jenkins start
Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details.

这个问题在 Jenkins website 中明确说明是一个 Java 问题。

但我已经通过从 oracle 网站下载并配置了“update-alternatives”在我的机器上安装了 java

aquarius:/usr/lib/jenkins # java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
aquarius:/usr/lib/jenkins # javac -version
javac 1.8.0_25
aquarius:/usr/lib/jenkins # whereis java
java: /usr/bin/java /usr/lib64/java /etc/java /usr/share/java
aquarius:/usr/lib/jenkins # echo $JAVA_HOME
/usr/java/latest
aquarius:/usr/lib/jenkins # update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                       Priority   Status
------------------------------------------------------------
  0            /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java   17147     auto mode
* 1            /usr/java/jdk1.8.0_25/bin/java              1         manual mode
  2            /usr/lib64/jvm/jre-1.5.0-gcj/bin/java       1500      manual mode
  3            /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java   17147     manual mode

Press enter to keep the current choice[*], or type selection number: 1
aquarius:/usr/lib/jenkins # update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                     Priority   Status
------------------------------------------------------------
  0            /usr/lib64/jvm/java-1.5.0-gcj/bin/javac   1500      auto mode
* 1            /usr/java/jdk1.8.0_25/bin/javac           1         manual mode
  2            /usr/lib64/jvm/java-1.5.0-gcj/bin/javac   1500      manual mode

Press enter to keep the current choice[*], or type selection number: 1
aquarius:/usr/lib/jenkins # ls
jenkins.war                                                                                                                                                                                     
aquarius:/usr/lib/jenkins # whereis jenkins                                                                                                                                                     
jenkins: /usr/lib/jenkins                                                                                                                                                                       
aquarius:/usr/lib/jenkins # 

谁能给我一个解决方案。

【问题讨论】:

【参考方案1】:

您正在使用 java 8 启动 jenkins。这是一个相当新的 jdk,最近刚刚获得了生产就绪状态。

jenkins JIRA 中的这个错误描述了一个类似的情况:https://issues.jenkins-ci.org/browse/JENKINS-22270

建议的解决方案是切换到 java 7。你试过了吗?

【讨论】:

我有另一个系统,它使用 jdk 8 设置并且工作正常。这里有两个系统 jdk 8 + jenkins 工作正常。 如果它在其他系统中使用 jdk 8,它需要使用 jdk 8 对吗?我认为缺少一些链接。如何找到它? 嗯,根据詹金斯文档,理论上它应该适用于任何 jdk >=1.6。所以1.8应该没问题。 我尝试为 /usr/bin/jar 创建一个链接,现在“service jenkins start”正在运行。但是在浏览器中什么都没有出现。现在,如果我执行“service jenkins status”,它会显示“Unit jenkins.service 进入失败状态。” 我从来没有使用过 ubuntu 替代机制,因为我总是遇到一些问题。我总是手动安装 java,只需在/opt 中用 java 复制解压的 tar,例如在/opt/jdk1.7_51 中,然后将符号链接/opt/jdk 指向我要使用的java,然后在/usr/local/bin 中创建符号链接,例如sudo ln -s /opt/jdk/bin/java /usr/local/bin/java 这样我就有了一个非常灵活的机制来切换java版本,安装新版本等。也许你可以自己安装java并改变jenkins开始它?

以上是关于詹金斯在 linux 中无法识别我的 java的主要内容,如果未能解决你的问题,请参考以下文章

Mocha SonarQube 无法识别 Node.JS 代码

无法为詹金斯中的对象堆错误保留足够的空间[重复]

Linux子系统Linux无法识别JAVA_HOME环境变量

詹金斯:无法将奴隶连接到主人

詹金斯“无法安装 JDK”退出代码=-1

詹金斯:无法在管道阶段定义变量