2017-12-18 14 views
0

Ich habe meine /etc/environment wie folgtUmgebungsvariablen in JAVA (tomcat)

APP="/opt/apps/" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" JAVA_HOME="/usr/lib/jvm/java-8-oracle"

ich source /etc/environment auf meiner Maschine beschafft haben. Ich bin in der Lage, die Ausgabe zu erhalten, wenn ich echo $APP auf Terminal

Typ, aber wenn ich es nennen aus dem Inneren einer Java-Datei

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

erhalte ich nur die Ausgabe von PATH, aber nicht die anderen 2 env Variablen .

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

Bitte korrigieren Sie mich, was soll ich

+0

Überprüfen Sie diese System.getProperty ("JAVA_HOME"); –

+0

Was bekommen Sie, wenn Sie das 'EnvMap' Beispiel aus [dem Tutorial] (https://docs.oracle.com/javase/tutorial/essential/environment/env.html) ausprobieren? –

+1

Auch PATH-Variablenwerte stimmen nicht überein. –

Antwort

3

Es klingt wie APP und JAVA_HOME werden nicht exportiert falsch. Bei Unix-Shells besteht ein Unterschied zwischen set (die Variable ist in Ihrer aktuellen Shell sichtbar) und export (die Variable ist für alle Subprozesse sichtbar). Wenn Sie einfach "X = Y" eingeben, wird X gesetzt, aber nicht exportiert. PATH wird meistens schon irgendwo exportiert.

Sie können dies testen, indem Sie in Ihrer Konsole "export | grep APP" ausführen. Wenn APP nicht angezeigt wird, ist die Variable für Java oder ein anderes Programm, das Sie ausführen, nicht sichtbar, obwohl echo $APP einwandfrei funktioniert.

Wenn dies der Fall ist, fügen Sie einfach "Export APP" zu Ihrer .Profile, oder das Skript, mit dem Sie Ihre Java-Anwendung starten (oder zu testen, tippen Sie einfach auf der Konsole, bevor Sie Java starten).

+0

Running 'Export | grep APP' gibt folgendes Ergebnis 'deklarieren -x APP ="/opt/apps/"' Aber ich kann immer noch nicht auf JAVA zugreifen –

+0

@Jay Wie und woher fangen Sie Java an? Ich meine: - Starten Sie es von der Konsole als Java YourClassName - führen Sie es mit einem Skript - oder sprechen wir über eine Web-App, die als Dienst ausgeführt wird? – Yaro

+0

Ich stelle eine WAR-Datei auf dem Tomcat-Server bereit. Mein Kater befindet sich unter/opt/tomcat. Version 8. * –

0

Sie sollten Ihre/etc/environment nicht beziehen. Das ist nicht der Weg, um Variablen in Ihren Prozess zu bekommen. Die Datei/etc/environment ist kein Skript, daher ist es nicht sinnvoll, sie zu beziehen. Es ist nur eine Liste von Einstellungen, ein bisschen wie eine Eigenschaftendatei.

Weitere Informationen finden Sie unter this.

Es wird gelesen, wenn Sie sich anmelden. Um die Variablen sichtbar zu machen, sollten Sie sich daher ab- und wieder anmelden.

+0

Ich habe das System bereits neu gestartet, aber es hat keine Wirkung. Ich bekomme Ausgabe, wenn ich Echo $ APP ausstelle, aber die gleiche Variable ist in der Java-Datei nicht zugänglich –