Nicht finden können Java-home
Ich Schreibe eine Anwendung, die nutzt jsvc
zum starten eines Java-service als daemon. Ich müssen zu benutzen, so etwas wie jsvc
weil meine Anwendung nutzt die ports unter 1024 und doch, ich möchte wirklich nicht als root starten, so dass erstellte Dateien gehören einem anderen Benutzer. Ich möchte auch zu halten, Abhängigkeiten und Konfiguration auf ein minimum, so dass alle muss der client ist eine JVM und die jsvc
binary installiert.
Allerdings scheint es, dass jsvc
hat einen großen Haken: es können nicht erkennen die home-Ordner von Java auf einem bestimmten Betriebssystem Unix, das ist ziemlich frustrierend:
$ ./startup.sh
Cannot locate Java home
War ich in der Lage zu arbeiten, um das Problem unter Ubuntu zumindest durch das manuelle festlegen der JVM-home-Verzeichnis:
jsvc ... -home /usr/lib/jvm/default-java/ ...
Gibt es eine Möglichkeit, um zu bestimmen, die Java-home-Verzeichnis dynamisch aus ein Bash-script, so kann ich diese Arbeit machen in den meisten UNIX/Linux-Versionen? Ich würde in der Lage sein, viel besser schlafen in der Nacht etwas zu tun wie:
JAVA_HOME="$( ... )"
jsvc ... -home "$JAVA_HOME" ...
...eher als hard-Codierung für jedes einzelne Betriebssystem. Gibt es eine Möglichkeit, dass, wenn ein java
binäre, ich finde das home-Verzeichnis von der JVM/JRE?
- möglich, Duplikat der Was ist das richtige Ziel für Sie die JAVA_HOME-Umwelt-variable für eine Linux-OpenJDK debian-basierte distribution?
- Nicht ein Duplikat ist; ich bin versucht, zu suchen Java home allgemein, nicht nur für Debian-Distributionen, aber auch für Red Hat, OS x und andere Linux-Versionen/UNIX-Varianten.
- Bitte Lesen Sie die SO link. Besonders die Teile über "update-java-alternatives - /update-alternatives".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht sicher, ob dies funktioniert auf *Nixen, fand aber diese Lösung:
Ich habe es getestet auf Ubuntu und es funktioniert, aber es funktioniert nicht für OSX.
Meine Lösung war, die Kompilierung der nativen linux-source-als Haupt-jsvc Seite sagt
http://commons.apache.org/proper/commons-daemon//jsvc.html
Hier ist meine Schritt für Schritt Vorgehensweise
Download http://www.fightrice.com/mirrors/apache/commons/daemon/source/commons-daemon-1.0.13-src.tar.gz
Sobald Sie extrahieren Sie die Datei und gehen Sie dann zu ...../commons-daemon-1.0.13-src/src/native/unix
im terminal als root Folgendes tun:
$ support/buildconf.sh
$ ./configure --with-java=/usr/lib/jvm/default-java
$ machen
test generiert jsvc binary app
$ ./jsvc -Hilfe
Es funktioniert! sauber.
Verwenden
dirname
undwhich
Befehle zu finden, die Java-bin-Verzeichnis:... Funktioniert nur, wenn Java bereits auf der
$PATH
./usr/bin
, die zweifellos (und reproduzierbar) nicht. Dawhich java
zurück/usr/bin/java
, das ist, was ich bekomme.Einen anderen Weg :
Erwarten, dass dies wieder die richtige JAVA-installation Ordner.