Sto scrivendo un'applicazione che utilizza lo jsvc
per avviare un servizio Java come daemon. Ho bisogno di usare qualcosa come jsvc
perché la mia applicazione utilizza porte sotto 1024 e ancora mi piacerebbe davvero non eseguirlo come root in modo che i file creati siano di proprietà di un altro utente. Mi piacerebbe anche mantenere le dipendenze e la configurazione al minimo in modo che tutto il client abbia bisogno di una JVM e del binario jsvc
installato.Impossibile trovare Java home
Tuttavia, sembra che jsvc
abbia un problema importante; non è possibile rilevare la cartella principale di Java su un dato sistema operativo Unix, che è abbastanza frustrante:
$ ./startup.sh
Cannot locate Java home
sono stato in grado di risolvere il problema su Ubuntu almeno impostando manualmente la directory home JVM:
jsvc ... -home /usr/lib/jvm/default-java/ ...
esiste un modo per determinare la directory home Java dinamicamente da uno script Bash modo che io possa fare questo lavoro nella maggior parte dei sistemi Unix/versioni di Linux? Sarei in grado di dormire meglio la notte facendo qualcosa di simile:
JAVA_HOME="$(...)"
jsvc ... -home "$JAVA_HOME" ...
... piuttosto che hard-codifica per ogni singolo sistema operativo. C'è un modo che, dato un binario java
, posso trovare la directory home della sua JVM/JRE?
possibile duplicato di [Qual è l'obiettivo corretto per la variabile di envrionment JAVA_HOME per una distribuzione basata su Debian OpenJDK Linux?] (Http://stackoverflow.com/questions/663658/what-is-the-correct-target- for-the-java-home-envrionment-variable-per-a-linux-op) – paulsm4
Non un duplicato; Sto cercando di localizzare Java in modo generico, non solo per le distribuzioni Debian ma anche per Red Hat, OSX e altri Linux/Unix. –
Si prega di leggere il link SO. Soprattutto le parti su "update-java-alternative/update-alternative". – paulsm4