Bir Java hizmetini bir arka plan olarak başlatmak için jsvc
'dan yararlanan bir uygulama yazıyorum. Uygulamam 1024'ün altındaki bağlantı noktalarını kullandığı için, jsvc
gibi bir şey kullanmam gerekiyor, ancak oluşturduğunuz dosyaların başka bir kullanıcı tarafından sahiplenilmesi için root olarak çalıştırmama gerçekten çok istiyorum. Ayrıca, tüm müşteri gereksinimlerinin bir JVM ve jsvc
ikili kurulu olduğu için bağımlılıkları ve yapılandırmayı en düşük düzeyde tutmak isterim. Bununla birlikte, jsvc
'un büyük bir yakalamaya sahip olduğu görülmektedir; En azından elle JVM ev dizini ayarlayarak Ubuntu soruna geçici mümkün olmuşturJava evi bulunamıyor
$ ./startup.sh
Cannot locate Java home
: oldukça sinir bozucu verilen bir Unix işletim sistemi, üzerinde Java giriş klasörü tespit edemez:
jsvc ... -home /usr/lib/jvm/default-java/ ...
Ben en çok Unixler/Linux dağıtımları arasında bu işi yapmak, böylece bir Bash komut dosyasından dinamik Java ev dizini belirlemek için herhangi bir yolu var mı? değil, her bir işletim sistemi için sabit kodlama daha ...
JAVA_HOME="$(...)"
jsvc ... -home "$JAVA_HOME" ...
: Ben böyle bir şey yaptığını geceleri çok daha iyi uyku mümkün olurdu. Bir java
ikili verildiğinde, JVM/JRE'nin ana dizinini bulabilmemin bir yolu var mı? Java zaten $PATH
açıksa Sadece çalışır ...
echo `dirname \`which java\``
JAVA_HOME=`dirname \`which java\``
:
olası bir kopyası [Linux OpenJDK debian tabanlı dağıtım için JAVA_HOME envrionment değişkeninin doğru hedefi nedir?] (Http://stackoverflow.com/questions/663658/what-is-the-correct-target- java-home-envrionment-variable-for-a-linux-op için) – paulsm4
Yinelenmez; Java'yı sadece Debian dağıtımları için değil, aynı zamanda Red Hat, OSX ve diğer Linux/Unixler için de jenerik olarak bulmaya çalışıyorum. –
Lütfen SO bağlantısını okuyun. Özellikle "güncelleme-java-alternatives/update-alternatives" ile ilgili bölümler. – paulsm4