首页 > 编程语言 >jenkins中ssh远程无法执行javac命令

jenkins中ssh远程无法执行javac命令

时间:2023-02-03 18:12:32浏览次数:55  
标签:java javac 登录 命令 ssh jenkins

最近发现有个项目修改后在jenkins发布不生效,查找原因,根据输出的日志发现javac 命令不存在,但是登录上服务器发现手动输入执行javac 相关命令是没问题的,于是在jenkins中添加which java命令输出安装路径,发现跟/etc/profile中配置的环境变量不一致。

whoami
pwd
java -version
javac -version
which java

这就很奇怪了,/etc/profile中的配置不是全局的吗?那再修改用户文件夹下的.bash_profile试试,结果发现也不行。

因为jenkins是docker版本的,而该项目因为特殊性是jenkins中通过Execute shell script on remote host using ssh远程登录到宿主机再执行的javac和java任务,所以考虑是ssh登录后查到的环境变量与实际登录服务器查到的环境变量不一致导致的。

网上搜到的解决方案:https://www.cnblogs.com/linyufeng/p/12663162.html 和 https://blog.csdn.net/u013008898/article/details/126892575

究其原因是ssh登录后访问的环境变量是用户文件夹下的bashrc文件配置的,我直接把/etc/profile中自定义的参数部分copy过来了,修改相关参数后不要忘记执行 source bashrc 哦。

问题解决。


 

 

这里又想到一个解决办法:

上面当ssh无法执行javac相关命令时,却可以执行java相关命令,因为现在centos一些版本默认配置了java jdk,但没有配置javac,所以才导致了java可用而javac不可用。

既然如此,那可以在jenkins中先用javac 将所有文件编译生成对应.class文件,然后通过ssh执行java命令启动文件即可,这样就不需要用到宿主机ssh登录后的javac命令了。

 

标签:java,javac,登录,命令,ssh,jenkins
From: https://www.cnblogs.com/jying/p/17090130.html

相关文章

  • jenkins配置和使用使用git,ssh方式
    1.安装githttps://blog.csdn.net/jsboy123/article/details/806172312.生成git秘钥和私钥ssh-keygen-trsa3.查看公钥并配置到自己的项目中cat.ssh/id_rsa.pub4.jenkins......
  • jenkins的git parameter简述
    安装就不多说了。插件管理找git parameter安装就行。 当使用自由风格的项目时第一步:先选择参数构建中的git参数,名称随便写,参数类型为branch,tag等5种,这里就选择下图......
  • KingbaseES V8集群运维案例之---系统用户修改密码或过期对ssh互信的影响
    案例说明:KingbaseV8主备流复制集群在通用机环境部署和运维,需要建立主机间的ssh互信,如果ssh互信被破坏,将导致集群故障。但有的生产环境为了系统安全需要,会配置密码管理策......
  • jenkins访问报错AWT is not properly configured on this server. Perhaps you need t
      貌似是AWT组件中FontConfiguration组件出现一些问题。隐约记得好想OpenJDK的某一个坑。OpenJDK和OracleJDK之间其中一个差别是:OpenJDK对某一些组件类似上面的字体......
  • 解决:powershell无法使用ssh-copy-id命令
    如果你在配置服务器的免密登陆时出现了如下的error,那这篇文章一定会对你有帮助(zzh是我配置的别名,如果没有配置过,后面跟的参数应该是用户名@ip地址的格式)报错的原因呢,其......
  • 60、ssh服务高级应用
    ssh本地端口转发SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据。但是,SSH还能够将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了相应的加密及解......
  • Linux基础课:第四章--ssh
    第四章的学习ssh配置ssh免密登录首先在.ssh/.config创建文件,初始化server信息。然后利用公钥或者命令ssh-copy-id登录scp两个终端之间传递文件scp[-r]sourcedest......
  • jenkinsfile与项目做隔离
    @Library('siheng-devops')_pipeline{agent{label'jnlp-slave'}options{timeout(time:200,unit:'MINUTES')gitLabConnection('gi......
  • Jenkins拉取GitHub上代码
    1、github生成PersonalAccessToken      选择要拉取的项目 ......
  • 59、SSH服务
    ssh服务介绍及通信原理ssh服务:secureshell;加密通信,代替传统的telnet具体软件实现:openssh、dropbearssh协议版本:V1基于crc-32做mac,不安全;V2双方主机基于安全的mac方式,基于DH......