JAVA_HOME ortam değişkeninin var olmasının nedeni nedir?


94

Çoğu java tabanlı uygulama JAVA_HOME env değişkenini ayarlamayı gerektirir. Bu değişkenin amacı nedir?


5
okuyabilir burada
Sergey Vedernikov

2
Sorunun henüz bir cevabı olmadığını görüyorum. Java'nın kendisini çalıştırmaya gelince, yolda ikilinin bulunduğu klasöre sahipseniz bu değişkene sahip olmak gerekli değildir. Tüm yanıtlar bariz olanı işaret ediyor: "Java'nın kurulduğu yer". Ama Neden: Java uygulamalarını çalıştırmanın anlamı nedir?
Wolf

7
Tüm bu yorumlara ve yanıtlara rağmen, bu ortam değişkenini ayarlamak için gerçek bir neden göremiyorum . Gerekçe yok. Bunu wsdl2java ile ayarlamaya çalışırken geldim buraya. Bu aracı kullanmıyorsam, env değişkenine gerek yok .... görünüşe göre sadece bazı araçlar bu değişkeni kullanıyor. ama neden?
Thufir

@Thufir - Bununla birlikte, hiçbir yerde açıkça belirtilen nedeni görmedim . - JAVA_HOME sadece bir gelenektir. Herkesin kullanmayı kabul etmesinden başka özel bir anlamı yoktur. AFAIK - Gördüğüm tek kullanım, araçlara normalde PATH değişkeninde ayarlanan JRE ile JDK arasında ayrım yapma yeteneği sağlamasıdır. Normalde JAVE_HOME, JDK olarak ayarlanır. - Açıkça. Java exe'yi bulmak için birden fazla yerin olabileceği PATH ile yaptığınız gibi dizinlerin sıralamasıyla uğraşmak yoktur.
Rohan

Yanıtlar:


22

Ortam değişkenleri , sürücü, yol veya dosya adı gibi bilgileri içeren dizelerdir.

Java_home ortam değişkeni Java Runtime Environment (JRE) bilgisayarınızda yüklü olduğu dizine işaret eder.


40
Bir düzeltme: JAVA_HOME bir JRE'yi değil bir JDK'yı işaret etmelidir. Birçok uygulama farkı umursamıyor, ancak bazıları için önemli.
Chris Nava

4
JDK'da ayrıca JRE klasörü de bulunmaktadır. Bu nedenle, JAVA_HOME yardımıyla, bir uygulama JRE'nin yanı sıra JDK'yı da bulabilir.
haydut delikanlı

@ChrisNava: JAVA_HOME'u bir JRE kurulumuna yönlendirmenin bazı durumlarda geçerli olduğu görülüyor (geliştirme dışı durumların çoğunu tahmin ediyorum): stackoverflow.com/questions/17601827/… . Yani "yapmalı" demek çok fazla şey söylüyor.
cic

18

Amaç, Java'nın kurulu olduğu yere işaret etmektir. $JAVA_HOME/bin/javaJava çalışma zamanını yürütmelidir.


4
Ancak bu aptalca çünkü java yolda olmalı ve ikili kendisini bulabilir ve diğer dosyaları göreceli bir yol kullanarak açabilir.
LtWorf

3
Java $ PATH üzerinde olmadığında , örneğin birden fazla SDK kurulumunuz olduğunda kullanışlıdır .
Haakon

İkilinin 1. argümanı çalıştırılabilir dosyanın tam adıdır, java'nın kendi dizinini bulmak için yolda olması gerekmez.
LtWorf

Birden JDKs kurmaya çalışan @Haakon olarak birisi, neden olur değil yolda java istiyor? Windows java'yı java_home'dan nasıl bulur? Yolun aşağı yukarı "işletim sisteminin yürütülebilir dosyaları arayacağı yerlerin listesi" olarak tanımlandığını düşündüm.
LastStar007

7

Bir Java programını çalıştırdığınızda, önce JVM'yi başlatmanız gerekir, bu genellikle bir yürütülebilir dosya çalıştırılarak yapılır, Windows'ta bu java.exe'dir . Bunu pek çok şekilde elde edebilirsiniz, örneğin tam bir yol vererek:

C:\somedir\bin\java.exe

veya PATH'nizde olabilir.

Komut satırı bağımsız değişkenleri olarak, programınız olan sınıf dosyalarını içeren bazı sınıf dosyalarını veya Jar dosyalarını belirtirsiniz. Ancak bu yeterli değil, java.exe'nin kendisi çeşitli başka kaynaklara ihtiyaç duyuyor, en azından tüm Java kitaplıklarına değil. JAVA_HOME ortam değişkenini ayarlayarak, JRE'nin ve dolayısıyla tüm bu çalışma zamanı kaynaklarının nerede bulunacağını belirtirsiniz. Çalıştırdığınız belirli Java'nın JAVA_HOME ayarıyla eşleştiğinden emin olmalısınız.

Ayrıca JAVA_HOME\binyolunuza erkenden koymanız da gerekebilir, böylece java.exekendisinin bir kopyası ortaya çıkarsa (örneğin bir JSP derlemek için) doğru sürümü alır.


6

@Dirai'ye göre burada JAVA_HOMEJava kendisi tarafından değil , örneğin Apache Tomcat gibi bazı üçüncü parti araçlar tarafından kullanılmaktadır . Ancak çoğu uygulama bu değişken ayarlanmadan çalışacaktır ancak bazıları beklenmeyen davranışlar gösterebilir.


5

JAVA_HOMEbir ortam değişkenidir .

Farklı işletim sistemlerinde kurulması gerekir. Aşağıdaki bağlantılara göz atın.

Ayrıca daha fazla bilgi için buraya bakın .


1
Sen conflating edilir environmentile pathfarklı şeyler ama Linux gibi Windows tamamen aynı şekilde kullanılır olan,.
Val

1
@val, o zamandan beri cevabında düzeltildiğine işaret ediyor.
barlop


3

JAVA_HOMEbirden çok java kurulumunu çalıştırmanıza izin verir. /usr/lib/jvm/java-1.8.0/bin/java Önce PATH'inizde olsa bile , JAVA_HOME=/usr/lib/jvm/java-1.5.0programları çalıştırdığınız varsayılan "java" nın, bunun yerine, bir ortam ayarı gereği diğerini kullanması yararlıdır . Bu, bir programcının normal bir sistem konumunda kurulu olmasa bile ihtiyaç duyduğu java'yı kullanmasına ve bu alternatif sürümle test etmesine veya ters uyumluluk sağlamasına olanak tanır. Ve Java'nın kendisi için büyük bir sürüm güncellemesi gibi başka bir yüklü program tarafından PATH'de sıfırlanmaya karşı savunmasız değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.