前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于java远程调用tomcat脚本的问题

关于java远程调用tomcat脚本的问题

作者头像
简单的程序员
修改于 2021-03-14 11:52:10
修改于 2021-03-14 11:52:10
1.1K0
举报
文章被收录于专栏:奕仁专栏奕仁专栏

背景:这两天搞了一下java的跨系统远程调用,遇到了几个问题,其中最让我头疼的就是下面那个,然而最后也解决了,故写下来总结一下

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

我是用的第三方连接远程系统,即ganymed-ssh2

代码语言:txt
AI代码解释
复制
<dependency>
	<groupId>ch.ethz.ganymed</groupId>
	<artifactId>ganymed-ssh2</artifactId>
	<version>build210</version>
</dependency>

在我编写完代码之后,运行出现了好几个问题,比如利用java运行远程服务器的脚本出现not permission>学过编程的人肯定都知道这是没有权限,给它个权限就好了,即 chmod 777 /data/xxx(即路径). 说一下调用/tomcat/bin/startup.sh 出现Neither the JAVA_HOME nor the JRE_HOME environment variable is defined,为什么呢?大概是因为用java远程登录不能获取到环境变量吧!

然后贴上java连接的代码

代码语言:txt
AI代码解释
复制
import ch.ethz.ssh2.ChannelCondition;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import lombok.extern.slf4j.Slf4j; 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;


@Slf4j
public class ServerUtils {

    private Connection conn;
    private String ip;
    private String username;
    private String password;
    private static final int TIME_OUT = 3;

    private static final Logger LOGGER = LoggerFactory.getLogger(ServerUtils.class);
    /***
     * 分割  获取PID
     */
    private static final String SPLIT = "     ";



    /**
     * 构造函数
     */
    public ServerUtils(ServerEnum serverEnum) {
        this.ip = serverEnum.getIp();
        this.username = serverEnum.getName();
        this.password = serverEnum.getPassword();
    }


    /**
     * 登录
     * @throws IOException
     */
    private boolean login() throws IOException {
        conn = new Connection(ip);
        conn.connect();
        return conn.authenticateWithPassword(username, password);
    } 
 
    public static void main(String[] args) throws Exception { 
        new ServerUtils(ServerEnum.test2).start(ServerEnum.test2, ProjectEnum.ent); 
    }
}

解决办法:

在服务器上编写一个脚本,手动设定它的jdk环境变量,创建一个脚本tomcat.sh,编写如下:

代码语言:txt
AI代码解释
复制
#! /bin/bash
TOMCAT_NAME=tomcat-crm
PROJECT_PATH=/pm/server/$TOMCAT_NAME
DATE=`date +%Y-%m-%d--%H-%M-%S`
###设置java变量
export JAVA_HOME=/data/server/jdk1.8.0_181
./startup.sh 

在调用java -jar 进行启动springboot项目的时候也发现了此类问题,尽管加上export JAVA_HOME=xxxx也没什么用, 在这里加入下面的命令完美解决springboot远程启动的问题:

代码语言:txt
AI代码解释
复制
**source /etc/profile;nohup java -jar /mnt/test.jar &  **
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java远程连接服务器并执行脚本命令工具类
如何实现一个Java程序中远程连接服务器执行一个脚本呢?有时候会有这种需求,如果非要去另外一个机器执行脚本,那么可以使用我下面这个工具类,已经封装好了,直接拿来用即可。
Lcry
2022/11/29
1.4K0
java读取linux服务器下某文档的内容
刘大猫
2024/12/08
1100
一文告知Java如何实现通过ssh 和远程服务器开展对话聊天
我们有时候会用到利用远程服务器,java代码怎么链接到远程服务器上呢,这里我们做下简单的封装。
雷子
2021/03/15
5450
一文告知Java如何实现通过ssh 和远程服务器开展对话聊天
Java SSH远程执行Shell脚本实现
代码如下 import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; public class SshCommandExec { public static void exec(String
jiewuyou
2022/09/29
8570
一文读懂springboot+ganymed访问centos
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
QGS
2023/12/24
2140
linux下安装tomcat8
1.自己电脑下载好jdk的linux版本传到linux上或者直接用wget命令下载
全栈程序员站长
2022/09/05
1.8K0
linux下安装tomcat8
分享一例脚本发版和tomcat重启脚本
线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat。 tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里下载到本地,首次下载后,后续就使用svn update更新代码即可。 发版脚本: [root@redmine ~]# cd /Data/webroot_svncode/xqsj_app/banshanbandao/bsbd_war/ [root@redmine bsbd_war]# ls ROOT.war
洗尽了浮华
2018/01/23
6280
Flink使用代码提交任务
前言 本文Flink使用版本1.12.7 代码提交任务 准备文件夹和文件 hadoop fs -mkdir -p /jar/userTask hadoop fs -mkdir -p /jar/flink12/libdist hadoop fs -mkdir -p /jar/flink12/lib 拷贝需要的文件 hadoop fs -put $FLINK_HOME/examples/batch/WordCount.jar /jar/userTask/WordCount.jar hadoop fs -put
码客说
2023/01/08
1.7K0
Linux之安装Tomcat8 原
    修改List-5的server.xml,将port的值修改为其它值就可以了,默认值是8080
克虏伯
2019/04/15
1.2K0
Linux之安装Tomcat8
                                                                            原
java可以使用ssh访问linux的框架有哪些
在写项目中发现需要使用到一些ssh去操作Linux的一些命令。然后对此展开了一个研究调研,看一下有能否哪一些框架适合现在去做一些对应的ssh的操作。这一些复杂的命令,选择一个合适的框架是非常重要的。有的时候当你可能去实现某一些业务的时候,发现其中的某一个类没有你想要的方法。这就比较苦恼,也不可能短时间内去跟作者提issue。因为那需要很漫长的时间。
查拉图斯特拉说
2024/01/17
6740
java可以使用ssh访问linux的框架有哪些
Tomcat介绍,安装jdk,安装Tomcat
Tomcat介绍: 安装jdk: jdk版本1.6,1.7,1.8              =以后其他程序员说了版本号6 7 8  其实就是1.6,1.7,1.8  版本  官网下载地址 http
叶瑾
2018/06/14
1.6K0
腾讯云服务器CentOS安装JDK+Tomcat+MySQL详细步骤(以及遇到的各种坑)
前言 趁着学生期间,买了一个云服务器拿来自己练练手,刚配置一个环境就让自己各种无语,把自己配置的步骤和遇到的问题整理一下。 安装过程: 安装JDK 看了很多资料,都推荐用Oracle JDK,避免Open JDK。因此,这里避免以后出现问题,推荐用Oracle JDK。 安装方式:rpm安装 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 将下载
用户1332428
2018/03/09
6K0
腾讯云服务器CentOS安装JDK+Tomcat+MySQL详细步骤(以及遇到的各种坑)
java scp传输文件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171994.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
1.7K0
谈谈个人网站的建立(三)—— 定时任务
Quartz 先看一下Quartz的架构图: </div> 一.特点: 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求; 灵活的应用方式,例如支持任务和调度的多种组合方式,
Zephery
2018/03/12
1.5K0
谈谈个人网站的建立(三)—— 定时任务
【JavaEE WEB 开发】Tomcat 详解 Servlet 入门
转载请注明出处 :  http://blog.csdn.net/shulianghan/article/details/47146817
韩曙亮
2023/03/27
3550
【JavaEE WEB 开发】Tomcat 详解 Servlet 入门
Hadoop通过HCatalog编写Mapreduce任务访问hive库中schema数据
1、dirver package com.kangaroo.hadoop.drive; import java.util.Map; import java.util.Properties; import com.kangaroo.hadoop.mapper.AggregateMapper; import com.kangaroo.hadoop.reducer.AggregateReducer; import org.apache.hadoop.conf.Configured; import org.ap
用户1225216
2018/03/05
1.5K1
java实现“数据平滑升级”
详情使用升级脚本步骤请看文档《4.6升级到4.7说明.docx》+ 部分数据平滑升级4.6升4.7升级流程图.png,文档和升级包可上我的资源中免费进行下载。
刘大猫
2024/11/03
760
添加kerberos后,Flink任务的运行认证及各组件的认证
https://www.psvmc.cn/article/2022-11-08-bigdata-kerberos-centos.html
码客说
2023/08/11
1.6K0
部署云服务器--(3) Linux系统用脚本方式实现Tomcat的开机自启动
此篇教程在我的电脑(deepin-generic)上是可以用的,做好脚本后重启立即生效,但是在服务器(CentOS-7.3),需要开机后等待十几分钟,原因不明啊,很迷,另外记得服务器的防火墙开了8080端口(或者你设置的tomcat的端口).
浩Coding
2019/07/02
1.7K0
部署云服务器--(3) Linux系统用脚本方式实现Tomcat的开机自启动
利用ganymed-ssh2远程执行其它Linux机器上的shell命令
实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求。事实上hadoop架构中,从nn上启动dn时,就是利用了免密码ssh登录。ganymed-ssh2是一个实现了ssh协议的开源项目,项目地址为:http://ganymed-ssh-2.googlecode.com/ (下载源码要翻强,众所周知的原因),如果只是使用的话,pom.xml添加以下依赖项就行了: 1 <dependency> 2 <grou
菩提树下的杨过
2018/01/19
1.7K0
相关推荐
Java远程连接服务器并执行脚本命令工具类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档