2017-12-18 28 views
0

は、私は私の/etc/environmentを持っています。私は、端末環境変数(Tomcatの)

echo $APPを入力すると、出力を得ることができるが、私は

LOGGER.error("APP: " + System.getenv("APP")); LOGGER.error("PATH: " + System.getenv("PATH")); LOGGER.error("JAVA_HOME: " + System.getenv("JAVA_HOME"));

javaファイルの中からそれを呼び出すとき、私は唯一のPATHの出力ではなく、他の2つのenv変数を取得します。

OUTPUT

2017-12-18 07:22:10 ERROR JRWebService:127 - APP: null 2017-12-18 07:22:10 ERROR JRWebService:128 - PATH:/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 2017-12-18 07:22:10 ERROR JRWebService:129 - JAVA_HOME: null

はAPPとJAVA_HOMEがエクスポートされていないようですね、私が間違って

+0

このチェックを行うには、このSystem.getProperty( "JAVA_HOME");をチェックしてください。 –

+0

[チュートリアル](https://docs.oracle.com/javase/tutorial/essential/environment/env.html)から 'EnvMap'の例を試してみるとどうなりますか? –

+1

PATH変数の値も一致しません。 –

答えて

3

を何をやっている私を修正してください。 Unixシェルでは、set(変数は現​​在のシェルで表示されます)とexport(変数はすべてのサブプロセスで表示可能)との間に違いがあります。単に「X = Y」と入力すると、Xが設定されますが、エクスポートされません。 PATHは大部分がすでにどこかにエクスポートされています。

コンソールで "export | grep APP"を実行すると、これをテストできます。 APPが表示されない場合、echo $APPがうまく動作しても、Javaやその他の実行しているプログラムに変数が表示されません。

この場合、.profileに「export APP」を追加するか、Javaアプリケーションを起動するスクリプトを追加するだけです(テストするには、javaを起動する前にコンソールに入力するだけです)。

+0

'export | grep APP'は次の結果を返します。 'declare -x APP ="/opt/apps/"'しかし、まだJavaの中でアクセスできません。 –

+0

@JayどうやってどこからJavaを起動していますか?つまり、 - コンソールからJava YourClassName として起動していますか? スクリプトを使用して実行していますか、サービスとして動作するWebアプリケーションについて話していますか? – Yaro

+0

tomcatサーバーにwarファイルをデプロイしています。私のtomcatは/ opt/tomcatにあります。バージョン8. * –

0

あなたの/ etc/environmentのソースは使用しないでください。それはあなたのプロセスに変数を与える方法ではありません。/etc/environmentファイルはスクリプトではないので、ソースを指定するのは意味がありません。これは設定のリストです。プロパティーファイルのようなものです。

詳細については、thisを参照してください。

ログインすると読み込まれます。したがって、変数を表示するには、ログアウトしてからログインする必要があります。

+0

私はすでにシステムを再起動しましたが、効果はありません。 echo $ APPを発行すると出力が出ますが、同じ変数はjavaファイルでアクセスできません –