jenkins bash:jar:command not found

qc6wkl3g  于 12个月前  发布在  Jenkins
关注(0)|答案(5)|浏览(200)

我正在使用 Jenkins 来部署构建。
我们需要将文件从**.war解压缩到某个目录中。我们有一个.xml文件,其中包含从.war文件中解压缩文件并启动服务器的命令。
构建正在正确创建,但
.war**提取未发生,目标文件夹为空。Jenkins控制台显示以下输出:

[sshexec] bash: jar: command not found

字符串
从其他答案中可以看出,我已经在**.bashrc.profile**中正确设置了PATH,但我仍然面临同样的问题。

ars1skjm

ars1skjm1#

安装Java devel如下:

yum install java-devel

字符串

twh00eeo

twh00eeo2#

具体来说,JAVA bin目录不在您的PATH变量中。将其添加到PATH变量中。为了搜索可执行文件,操作系统需要查找目录列表。因此,添加包含'jar tool in the PATH环境变量的目录 注意:对于Windows,路径分隔符是(;),对于类Unix操作系统,路径分隔符是(:`)

nuypyhwy

nuypyhwy3#

“[sshexec]”告诉我你正在使用一些Jenkins插件在远程主机上执行命令。
这通常意味着Jenkins会执行以下操作(或者通过原生实现SSH协议来执行等效操作):

ssh user@remotehost 'jar arg1 arg2...'

字符串
这里发生的是远程主机上的sshd守护进程将执行用户的默认shell并要求shell执行命令行。shell通常不作为“登录shell”执行,这意味着shell将跳过用户交互登录时登录shell通常执行的初始化步骤。
你可以研究一下man (name of your shell),看看有-l选项的shell和没有-l选项的shell到底有什么区别。在bash的情况下,它本质上意味着.profile.bashrc不会被执行,所以你可能在那里的任何PATH修改都不会发生。
我认为最好的办法是在执行jar命令时提供它的完整路径。

wh6knrhe

wh6knrhe4#

当您在远程主机上执行命令时,它将在远程主机上调用新的Shell。您在当前主机.bashrc文件中设置的PATH不会有任何区别。相反,如果您在远程主机的.bashrc文件中为Java设置PATH,则应该可以工作,否则如果您正在运行任何脚本,则请提到类似于/usr/jdk 64/jdk1.8.0_40/bin/jar -tf /的完整路径tmp/jars/abc.jar,同时在远程主机上调用命令。
有两种方法:

  1. export PATH=$PATH:/usr/jdk64/jdk1.8.0_40/bin -> in remote host's.bashrc
    1./usr/jdk 64/jdk1.8.0_40/bin/jar -tf/tmp/jars/abc.jar-->从远程主机调用jar命令,并使用完整的路径为JAR创建路径。
cvxl0en2

cvxl0en25#

对于Ubuntu 22.04:

apt-get install openjdk-19-jdk

字符串

相关问题