Java bash:jar:未找到命令
我正在使用Jenkins部署构建 我们需要将.war中的文件提取到某个目录中。 我们有一个.xml文件,其中包含从.war文件中提取文件并启动服务器的命令 生成已正确创建,但未进行.war提取,目标文件夹保留为空。Jenkins控制台显示以下输出:Java bash:jar:未找到命令,java,bash,jenkins,Java,Bash,Jenkins,我正在使用Jenkins部署构建 我们需要将.war中的文件提取到某个目录中。 我们有一个.xml文件,其中包含从.war文件中提取文件并启动服务器的命令 生成已正确创建,但未进行.war提取,目标文件夹保留为空。Jenkins控制台显示以下输出: [sshexec] bash: jar: command not found 从其他答案中可以看出,我已经在.bashrc或.profile中正确设置了路径,但我仍然面临同样的问题。具体来说,JAVAbin目录不在路径变量中。将其添加到PATH变量
[sshexec] bash: jar: command not found
从其他答案中可以看出,我已经在.bashrc或.profile中正确设置了
路径,但我仍然面临同样的问题。具体来说,JAVA
bin目录不在路径
变量中。将其添加到PATH
变量。为了搜索可执行文件,操作系统需要有一个要查找的目录列表。因此,在
PATH`环境变量中添加包含“jartool”的目录
注意:对于Windows,路径分隔符是(;
),对于类Unix操作系统,路径分隔符是(:
),“[sshexec]”告诉我您正在使用某个Jenkins插件在远程主机上执行命令
这通常意味着Jenkins执行以下操作(或者通过本机实现SSH协议来执行类似操作):
这里发生的是远程主机上的sshd守护进程将执行用户的默认shell,并要求shell执行命令行。shell通常不作为“登录shell”执行,这意味着shell将跳过用户交互登录时登录shell通常执行的初始化步骤
您可以研究man(shell的名称)
,以了解使用-l
选项执行的shell与不使用该选项执行的shell之间的区别。在bash的情况下,它本质上意味着将不执行.profile
和.bashrc
,因此不会进行任何路径修改
我认为最好的选择是在需要执行时提供jar
命令的完整路径
yum install java-devel
在远程主机上执行命令时,它将调用远程主机上的新Shell。在当前host.bashrc文件中设置的路径不会有任何区别。相反,如果您在远程主机的.bashrc中为Java设置了路径,那么在远程主机上调用该命令时,如果您正在运行任何脚本,则应提及JAR的完整路径,如/usr/jdk64/jdk1.8.0_40/bin/JAR-tf/tmp/jars/abc.JAR
有两种方法:
export PATH=$PATH:/usr/jdk64/jdk1.8.0_40/bin-->在远程主机的.bashrc中
/usr/jdk64/jdk1.8.0_40/bin/jar-tf/tmp/jars/abc.jar-->调用jar命令,并从远程主机获取jar的完整路径
您确定安装了JDK而不是JRE吗?@fge:JDK已安装(jdk1.6.0_33),并且JRE存在于JDK文件夹中,私有JREI如果您的系统上没有jar
命令,则无法“正确”修复路径。如果您的系统上确实存在该路径,则说明您未正确设置路径。在编辑您的问题时,我不想删除这句话,但您可能应该澄清您的意思,或者干脆删除它。Bin目录存在,我就是这样配置的。。那是Ryt吗?export JAVA_HOME=/usr/JAVA/jdk1.6.0_33 export PATH=$PATH:/usr/JAVA/jdk1.6.0_33/bin CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar;导出类路径您是否能够以这种方式执行-/usr/java/jdk1.6.0_33/bin/jar
。这行得通吗?实际上,我正在使用jar-xvf filename.war来提取文件,如果手动调用该命令,该命令可以正常工作,但使用Jenkins则不行。。这是某种权限问题吗?您是否设置了JAVA\u HOME
set?是否在您的用户配置文件中正确设置?是。。如上所述,Debian上的JAVA_HOME=/usr/JAVA/jdk1.6.0_33;。另见是。在使用jar的完整路径之后,它正在工作(在jenkins中)。谢谢你节省了我的时间。
yum install java-devel