Windows, JAVA_HOME'u yok sayıyor: JDK varsayılan olarak nasıl ayarlanır?


90

Windows'u JRE yerine JDK kullanmaya nasıl ikna edebilirim?

Bu soru daha önce burada ve başka yerlerde sorulmuştu:

Varsayılan Java kurulumunu / çalışma zamanını (Windows) nasıl ayarlarım?

Sorun şu ki, Windows JAVA_HOMEJDK bin dizinini yoldaki ilk girdi yaptığım gerçeğini görmezden geliyor.

java -versionKomut satırından çalıştırdığımda , JDK 1.6 kurulumumu çağırmak yerine 1.7 JRE çalıştırıyor.

Tahminimce bu, 1.7'ye özgü bir sorun ve Windows 7, kayıt defterinde yapmaması gereken bir şey yapıyor.

Bunu nasıl düzelteceğine dair bir fikrin var mı?

Düzenleme : Hata. "Yol" demek istediğimde yukarıda "sınıf yolundaki ilk girdi" yi yazdım. Afedersiniz.

Yanıtlar:


134

Windows'ta, javayürütülebilir dosya , çalıştırılacak varsayılan Java sürümünü bulmak için Windows Kayıt Defterini kullanır.

java.exeÇalıştırılacak kopyası , PATHortam değişkeni kullanılarak bulunur. Bunu değiştirmek için adımlar atmadığınız sürece, varsayılan olarak Windows dizininde bir kopyası bulunacaktır. Bu kopya bir Java çalışma zamanı dizininde olmadığından, kayıt defterine bakarak bir tane bulur.

Bu nedenle, ya kayıt defterini değiştirmeniz ya da istediğiniz Java sürümünü Windows dizininizin önüne koymanız gerekir PATH.


11
Burada OP. Yukarıdaki düzenlememe bakın. Evet, bu çözdü. İki not: Birincisi, Java yükleyicisinin java.exe dosyasını Windows \ System32 klasörüne koyduğu anlaşılıyor. Bu benim için şaşırtıcı. İkinci olarak, Bilgisayar / Özellikler / Gelişmiş Sistem Ayarları / Ortam Değişkenleri altındaki yolu değiştirdiğinizde , kullanıcı yolunu değil, sistem yolunu değiştirmeniz gerekir . Sistem yolu kendini ilk sıraya koyar.
ccleve

2
Ayrıca user237815'in Java yükleyicisinin java.exe dosyasını Windows \ System32 içine düşürdüğünü de vurgulayacağım. Bu kesinlikle benim için sezgisel değildi. Ancak bir konsoldan "java sürümü" nü kontrol ettikten sonra, Windows'un önceki ve istenmeyen sürümler yerine JDK kurulumumdan istediğim java.exe'yi kullandığı rahatlık düzeyini kazandım.
John Tobler

17
Sorun, Windows / System32 klasörümdeki java.exe, javaw.exe ve javaws.exe'yi yeniden adlandırarak benim durumumda da çözüldü. O zaman ve ancak o zaman, java -version, JAVA_HOME ve PATH
Inversus

6
Günümü kurtardın! PATH'de Windows'tan önce JDK ile ilgili girişi taşımak sorunu çözdü. Çok teşekkür ederim!
the_dark_destructor

9
Ben koymak %JAVA_HOME%\binbirinci konumda pathbana, Windows 10 ve çalışmalarına ilişkin değişken.
Wendel

31

Windows 8'de C:\ProgramData\Oracle\Java\javapath dizini kaldırmak isteyebilirsiniz .

yoldan

Sorunumu çözdü.


5
Windows 10'da: C: \ Program Files (x86) \ Common Files \ Oracle \ Java \ javapath. Bu, Sistem Yolu değişkenine otomatik olarak eklenir. Özel yol konumunuzu belirlediğini silin.
Dexter

1
yukarıdaki yorum Windows 10 durumunda yardımcı oldu
Saba Ahang

24

Bende de bu sorun var. 1.6 çalıştırıyorum ama üzerinde çalıştığım kodu 1.5 ile oluşturmak istiyorum. Ben değiştim JAVA_HOMEve PATHboşuna (kullanıcıyı hem de sistem).

Cevap 1.6 yükleyicisi düştüğüydü java.exe, javaw.exeve javaws.exebenim içine Windows\System32klasöründe (Windows 7).

Ben bu dosyaları yeniden adlandırarak bunu çözmüş java_wrong.exe, javaw_wrong.exeve javaws_wrong.exe. Ancak bunu yaptıktan sonra, içinde tanımlanan java'nın doğru sürümünü alır JAVA_HOMEvePATH . Dosyaları bu şekilde yeniden adlandırdım çünkü bu onları kolayca geri döndürülebilir bir şekilde sildim.

Bu yardımcı olur umarım!


10
Yeniden adlandırmak yerine, ilk değer olarak% JAVA_HOME% \ bin belirterek PATH değişkenini değiştirebilirsiniz, bu şekilde alacağı ilk değer olacaktır
maxivis

1
@maxivis Teşekkürler. Sanırım sorun, Windows \ System32 JAVA_HOME'dan önce olduğu gibi PATH öğelerinin sıralanması olabilir. Geri dönüşümlü bir şekilde etkili bir şekilde silinmeleri için onları yeniden adlandırdım.
Inversus

Her nasılsa JAVA_HOME'u yola koymak benim için hiçbir şekilde çalışmıyordu, bu aslında sorunu çözdü.
Guilherme Orioli

13

Windows hiçbir şeyi görmezden gelmez. Bu, kurulumunuzla ilgili bir sorundur; Windows yalnızca sağladığınız şeyi kullanır. Özel bir bilgisi yok JAVA_HOME.

CLASSPATHWindows ile hiçbir ilgisi yoktur. Windows için bu, yalnızca bir klasör konumuna genişleyen çevresel bir değişkendir.

%PATH%Çevresel değişkeninizi kontrol edin . Windows'un birini diğerinden önce bulmasını sağlayan şey budur. Yol (söylediğiniz gibi bağlandığınız gönderi) göstermelidir %JAVA_HOME%\bin;<remainder of path>. Yine, bağlantı verdiğiniz gönderi size bunu bir toplu iş dosyası kullanarak ayarlamanın bir yolunu verdi.

(Diğerleri için kim bu bilmiyor olabilir:% PATH% incelemek için en kolay yolu hızlı ve tipi bir komut açmaktır echo %PATH%. Ayrıca üzerinde sağ tıklayarak oraya ComputerBaşlat menüsünün sağ bölmede seçerek Properties, daha sonra Advanced System Settings, ve tne Environmental Variablesdüğmesi.)


@erickson: Tamam. Teşekkürler - Bunu düzelteceğim. Yine de Windows ile hiçbir ilgisi yok, cevabımın amacı buydu. :)
Ken White

Anlaşıldı, sadece yeni bir yanlış anlamanın yaratılabileceğinden endişelendim ; Java, JAVA_HOMEWindows'tan daha fazlasını bilmiyor .
erickson

Düzeltmeyi takdir ediyorum. Ben kendim Java kullanıcısı değilim (bugüne kadar sınırlı deneyim), bu yüzden ileride başvurmak üzere bilmek güzel.
Ken White

1
JAVA_HOMEjava kurulumunun köküne ayarlanmalıdır. Yol olmalıdır %JAVA_HOME%\bin;&lt;remainder of path%gt;, aksi takdirde java, javac, vb. "Bulmayacaksınız". Elbette, Windows yalnızca PATHdeğişkene bakar , ancak java ile ilgili bazı araçlar JAVA_HOMEara sıra bakar .
Edwin Buck

@Edwin: Eksikler de düzeltildi \bin. Teşekkürler.
Ken White

6

Ben de aynı sorunu yaşadım. 1.6 (C: \ jdk1.6.0_45_32 \ bin) kullanma yolunda belirtmiş olsam da, yüklü bir dizi Java sürümüm var ve nedense Java 1.6 yerine Java 1.7 kullanılıyordu.

Windows'un 1.7 yerine 1.6'yı kullandığından emin olmak için PATH ortam değişkenindeki ilk girdi olarak kullanmak istediğim JDK yolunu (1.6) taşımak zorunda kaldım.

Dolayısıyla, örneğin, önceki PATH ortam değişkeni şöyleydi:

C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin

ve jdk'yi ilk olarak taşıdıktan sonra işe yaradı:

C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin

Sanırım Java 1.7'nin Windows yükleyicisi onu PATH'de bulunan başka bir dizine yükledi, bu nedenle belirtilen özel PATH girişi yerine ilk önce kullanılıyor C: \ jdk1.6.0_45_32 \ bin;


Teşekkürler kardeşim. Yol değişkeninin ilk öğesi olarak JAVA_HOME \ bin yolunu taşımak hayatımı kurtardı.
ÖMER TAŞCI

4

'Path'Değişkendeki durumum için ' C:\ProgramData\Oracle\Java\javapath;' gibi bir parametre eklendi . Bu konum, sahip olduğu java.exe, javaw.exeve javaws.exeyeni ile yüklenir java 8'denjdk.exe Oracle.

Bu metni Yolumun zaten sahip olduğu Yoldan kaldırdım %JAVA_HOME%\bin .

Şimdi, değişken 'JAVA_HOME'istediğim Java sürümümü kontrol ediyor.


4

görüntü açıklamasını buraya girinJDK 8'den sonra JDK 10'u kurduğunuzu ve sistem ortamı değişkeninde "C: \ ProgramData \ Oracle \ Java \ javapath" gibi bir yol belirledikten sonra bu yoldan Java sürüm kontrolünü kurduğunuzu varsayalım. JAVA_HOME'u burada ayarlanan jdk 1.8 yolunu bile yok sayacaktır Bu nedenle, JAVA_HOME yolunun etkisini elde etmek için yoldan "C: \ ProgramData \ Oracle \ Java \ javapath" öğesini kaldırın



2

Java 7 ve 8'i yükledim ve java 7'ye yeniden yönlendirmek istiyorum ancak cmd istem penceremdeki java sürümü Java 8'i gösteriyor.
Java 7 bin dizin yolu eklendi ( C: \ Program Files \ Java \ jdk1.7.0_10 \ bin ) Sonunda PATH değişkenine, ancak çalışmadı ve Java 8'i gösteriyor. Bu yüzden Java 7 yolunu yol değerinin başlangıcı olarak değiştirdim ve işe yaradı.
Yeni bir cmd istem penceresi açtım ve java sürümümü kontrol etti ve şimdi Java 7 gösteriyor


1

Benim durumumda Java 7 ve 8 (her ikisi de x64) yüklüydü ve java 7'ye yeniden yönlendirmek istiyorum ancak her şey Java 8'i kullanacak şekilde ayarlandı. Java PATH ortam değişkenini kullanır:

C: \ ProgramData \ Oracle \ Java \ javapath

klasör çalışma zamanını aramak için ilk seçenek olarak (gizli bir klasördür). Bu yol, düzenlenemeyen 3 sembolik bağ içerir.

Bilgisayarımda PATH ortam değişkeni şuna benzer:

C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Windows \ System32; C: \ Program Dosyaları \ Java \ jdk1.7.0_21 \ bin;

Benim durumumda şöyle görünmeli:

C: \ Windows \ System32; C: \ Program Dosyaları \ Java \ jdk1.7.0_21 \ bin;

Sembolik bağlantıları kesip başka bir yere yapıştırmam gerekti, böylece java onları bulamaz ve daha sonra geri yükleyebilirim.

JAVA_HOME ve JRE_HOME ortam değişkenlerini istenen java klasörlerinin çalışma zamanlarına (benim durumumda Java 7) ayarladıktan sonra, komut java -version istediğiniz java çalışma zamanını göstermelidir. Kayıt defteriyle uğraşmaya gerek olmadığını söylüyorum.

Win7 x64 üzerinde test edilmiştir.


1

Bu sorun, muhtemelen Sisteminizde yüklü olan önceki Java sürümlerinden kaynaklanmaktadır. Önce Ortam Değişkenlerinizi dikkatlice kontrol edin ve JAVA'nın önceki sürümleriyle ilgili tüm Ortam Değişkenlerini kaldırın ve bu yolları değiştirin.

C:\Program Files\Java\<your new jdk version>\bin

0

Burada ek bir faktör var; java kurulumunun koymasını istediğiniz her yere koyduğu java yürütülebilir dosyalarına ek olarak, java yükleyici aynı zamanda bu çalıştırılabilir dosyaların bazılarının kopyalarını windows system32 dizininize koyar, böylece büyük olasılıkla her java yürütülebilir dosyasının hangisini kullanıyor olacaksınız. en son yüklendi.


0

BAT dosyasını Windows Hizmeti olarak kullanıyorsanız, Windows hizmetini kaldırmanızı ve% JAVA_HOME% öğesini doğru Java sürümünü gösterecek şekilde değiştirdikten sonra yeniden yüklemenizi öneririm ..


0

Bir süre bu sorunla uğraştıktan ve araştırdıktan sonra, sonunda şu adımları izleyerek çözmeyi başardım:

1) jdk sürüm 12'yi kurun
2) Sistem değişkeninde yeni değişken oluşturun
3) JAVA_HOME olarak adlandırın ve jdk kurulum yolunu verin
4) bu değişkeni yola ekleyin ve en üste taşıyın.
5) C: \ Program Files (86) \ Common Files \ Oracle \ Java \ javapath'a gidin ve java.exe ve javaw.exe'yi pathtojavajdk / bin klasöründeki aynı adlara sahip ilgili dosyalarla değiştirin

Son olarak, java'nın varsayılan sürümünü cmd'de "java-sürümü" ile kontrol ettim ve işe yaradı!


0

Aynı problemi yaşadım, kullanıcı ortamı değişken ayarlarında JAVA_HOME ve PATH'i düzgün yapılandırdım ama işe yaramadı. Sistem ortam değişkenlerimi güncelledikçe çalışmaya başladı.

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.