Ubuntu 14.04サーバーをインストールし、JDK1.8u5とTomcat7を抽出し、.profileに以下を追加しました(同様の[非]結果で.bashrcに追加しようとしました):
export Java_HOME=/opt/Java/jdk1.8.0_05
export PATH=$PATH:$Java_HOME/bin
echo $Java_HOME
を実行すると、/opt/Java/jdk1.8.0_05
の期待される結果が得られます。 Java -version
を実行して、Javaから正しい応答を取得することもできます。ここまでは順調ですね。
だから今、私はTomcatを起動しようとしました(catalina.shも試してみました)、次のようになります:
user@ubuntu:~$ Sudo /opt/Tomcat7/Apache-Tomcat-7.0.53/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
を試してみましたが、うまくいきましたか?
catalina.sh
にヘルプテキストがあります。ここで引用します。
# Do not set the variables in this script. Instead put them into a script
# setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
#
# Java_HOME Must point at your Java Development Kit installation.
# Required to run the with the "debug" argument.
# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
. "$CATALINA_BASE/bin/setenv.sh"
Elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
catalina.sh
を使用してTomcat
を起動すると、ファイルsetenv.sh
およびsourcing itを検索します。 CATALINA_HOME
またはCATALINA_BASE
で検索しています。
Tomcat
にJava_HOME
を設定するより良い方法は次のとおりです。
setenv.sh
という名前のスクリプトをフォルダーCATALINA_BASE/bin
に作成します(まだ存在しない場合)。この行をsetenv.sh
に追加します
export Java_HOME=/opt/Java/jdk1.8.0_05
実行可能にします。
スクリプトで環境変数を設定する方が安全です。できるだけローカルに変数を設定するようにしてください。本当にしない/etc/environment
が必要な場合は、/etc/profile
、Global Environment Variable
などを使用しないでください。 Java_HOME
でsetenv.sh
を設定すると、異なるバージョンのJava
を必要とするが、1人のユーザーが実行する異なるアプリケーションで異なるTomcatを使用できるようになります。他のユーザー環境は影響を受けません。
スーパーユーザーではなく、自分のユーザーに環境変数を設定しているため、次の2つのオプションがあります。
次のように-E
オプションを使用して変数をエクスポートする必要があります。
Sudo -E /opt/Tomcat7/Apache-Tomcat-7.0.53/bin/startup.sh
これにより、コマンドの実行中にすべての環境変数がエクスポートされることに注意してください。 rootとしてコマンドを実行すると通常のユーザー環境が流出するため、これは好ましくありません。これは望ましくありません。
変数をエクスポートします ルートの .bashrc
/etc/enviroment
ファイル。ターミナルを開き、次を入力します。
Sudo nano /etc/environment
管理パスワードを入力し、ファイルの最後に次の行を追加します。
Java_HOME=/opt/Java/jdk1.8.0_05
PATH=$PATH:$Java_HOME/bin
その後
source /etc/environment
または、マシンを再起動してから、使用していたコマンドを再試行してください。
更新:
この回答は、ステップ2が機能しない理由として2つのヒントを提供しました。Sudo
は環境をリセットし、安全なパスを提供するため、すべてのグローバル変数がリセットされます。回避策は使用することです
Sudo su
そして、設定された環境変数を使用するコマンドを実行します。
Tomcat7.service
はsetenv.sh
から取得されなかったため、catalina.sh
スクリプトにJava_HOMEを追加しました
手順:
1.Tomcat7サービススクリプトファイルを開く
Sudo gedit /etc/init.d/Tomcat7
2. Java_HOMEを設定する
.
.
.
Java_HOME=/usr/lib/jvm/Java-8-Oracle
# Directory where the Tomcat 6 binary distribution resides
CATALINA_HOME=/usr/share/$NAME
# Directory for per-instance configuration files and webapps
CATALINA_BASE=/var/lib/$NAME
# Use the Java security manager? (yes/no)
Tomcat7_SECURITY=no
3. Tomcat7サービスを開始します
Sudo service Tomcat7 status
私が探していた解決策は/etc/environment
にあります。これは EnvironmentVariables で指定されているように、スクリプトを処理せず、変数を展開しません。したがって、次の(withoutexport)トリック:
Java_HOME=/opt/Java/jdk1.8.0_05
次に、変更を有効にするためにシステムを再起動しました。