Java bash:jar:未找到命令

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变量

我正在使用Jenkins部署构建

我们需要将.war中的文件提取到某个目录中。 我们有一个.xml文件,其中包含从.war文件中提取文件并启动服务器的命令

生成已正确创建,但未进行.war提取,目标文件夹保留为空。Jenkins控制台显示以下输出:

[sshexec] bash: jar: command not found

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

具体来说,
JAVA
bin目录不在
路径
变量中。将其添加到
PATH
变量。为了搜索可执行文件,操作系统需要有一个要查找的目录列表。因此,在
PATH`环境变量中添加包含“jar
tool”的目录

注意:对于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