tomcatの起動をしたいのですが、下記のようにエラーが出ます
$ sudo /usr/local/tomcat/apache-tomcat-6.0.18/bin/startup.sh 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 $ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home $ echo $TOMCAT_HOME /usr/local/tomcat/apache-tomcat-6.0.18
JAVA_HOMEの設定はしているにも関わらず、設定していないというエラーが出てどうすればよいかわかりません。
考えられる理由としては、tomcat6をインストールする前にtomcat8を入れて実行しており、
今回はtomcat8を削除しtomcat6を入れたのでそこで何らかのファイルやらが影響しているのではないかと考えてます。
削除する流れは単にtomcat8ファイルを削除するだけでしたこれが問題??
$ rm -rf /usr/local/tomcat/apache-tomcat-8.5.46
あなたではなく、tomcat ユーザーに本当に設定されてますか?その環境変数
ログインユーザーでJAVA_HOMEを出力できますか?
上記コマンド同一ユーザーで出力しています。
下記コマンドでログインユーザーに権限付与も指定ます。
$ sudo chown -R [username]:admin /usr/local/tomcat/apache-tomcat-6.0.18
tomcatユーザーを作成しそちらに権限付与すべきなのでしょうか?
sudo で渡される環境変数はあらかじめ許可されたもののみに限られますので、JAVA_HOME が渡らないのでしょう。
startup.sh などのスクリプトに直接 JAVA_HOME を設定してしまう方法はどうでしょうか?
tomcatユーザーとか必要ありません。
TaichiYanagiyaさんがおっしゃるように、恐らくsudoで引き継がれる環境変数にJAVA_HOMEが入っていない(設定による)からではないかと思います。確認するためには、
sudo env | grep JAVA_HOME
としてください。envは環境変数を全て表示するコマンドなので、何も出なければJAVA_HOMEは引き継がれていません。調べた結果は、質問文に追記してください。
また、デフォルトの設定やsudo自体の挙動が不明確になるので、OSとバージョンも質問文に追記してください。