天天看點

pssh批量執行啟動tomcat報錯:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined問題描述問題分析解決問題

文章目錄

  • 問題描述
  • 問題分析
  • 解決問題

問題描述

我這邊一共4台主機,4台主機tomca路徑一緻。我想想通過pssh指令工具直接将4台主機的tomcat啟動,指令如下:

異常如下:

pssh批量執行啟動tomcat報錯:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined問題描述問題分析解決問題

異常問題:

hadoop-master: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
           

問題分析

首先檢查環境變量,發現我們已經配置了

[[email protected] ~]# echo $JAVA_HOME
/usr/local/jdk/jdk1.8.0_261
           

懷疑是通過pssh方式執行指令,不能使用全局的環境變量

解決問題

如果不能設定全局環境變量,那隻需要在tomcat啟動的時候設定環境變量即可,我們使用一台主機hadoop-slave1做測試

首先進入tomcat的bin目錄,并且編輯

[[email protected] bin]# cd /usr/local/tomcat/apache-tomcat-8.5.57/bin
[[email protected] bin]# vim catalina.sh 
           

在檔案的第二行添加進我們的環境變量

#!/bin/sh
export JAVA_HOME="/usr/local/jdk/jdk1.8.0_261"
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
           

然後wq儲存退出。再執行我們的pssh指令:

pssh批量執行啟動tomcat報錯:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined問題描述問題分析解決問題

發現執行成功了,再登入hadoop-slave1中驗證:

[[email protected] bin]# ps -ef|grep tomcat|grep -v grep
root       9820      1  0 18:13 ?        00:00:04 /usr/local/jdk/jdk1.8.0_261/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-8.5.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/apache-tomcat-8.5.57/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/apache-tomcat-8.5.57 -Dcatalina.home=/usr/local/tomcat/apache-tomcat-8.5.57 -Djava.io.tmpdir=/usr/local/tomcat/apache-tomcat-8.5.57/temp org.apache.catalina.startup.Bootstrap start
           

發現tomcat已經啟動成功了。按照此方式,把其他伺服器的tomcat也做同樣的修改,就可解決問題了。

最終目标:

[[email protected] pssh]# pssh -h hosts.text /usr/local/tomcat/apache-tomcat-8.5.57/bin/startup.sh
[1] 18:37:04 [SUCCESS] hadoop-slave2
[2] 18:37:04 [SUCCESS] hadoop-master
[3] 18:37:04 [SUCCESS] hadoop-slave1
[4] 18:37:04 [SUCCESS] hadoop-slave3
           
pssh批量執行啟動tomcat報錯:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined問題描述問題分析解決問題

繼續閱讀