Windows bỏ qua JAVA_HOME: Làm thế nào để đặt JDK làm mặc định?


89

Làm cách nào để thuyết phục Windows sử dụng JDK thay vì JRE?

Câu hỏi này đã được hỏi trước đây, ở đây và ở những nơi khác:

Làm cách nào để đặt cài đặt / thời gian chạy Java mặc định (Windows)?

Rắc rối là Windows bỏ qua JAVA_HOMEvà nó cũng bỏ qua thực tế là tôi đã đặt thư mục bin JDK là mục nhập đầu tiên trong đường dẫn.

Khi tôi chạy java -versiontừ dòng lệnh, thay vì gọi cài đặt JDK 1.6 của tôi, nó chạy JRE 1.7.

Tôi đoán rằng đây là một vấn đề cụ thể đối với 1.7 và Windows 7 đang làm điều gì đó không nên với sổ đăng ký.

có ý tưởng nào để sửa cái này không?

Chỉnh sửa : Rất tiếc. Tôi đã viết "mục nhập đầu tiên trong classpath" ở trên, khi tôi muốn nói đến "đường dẫn". Lấy làm tiếc.

Câu trả lời:


132

Trên Windows, javatệp thực thi sử dụng Windows Registry để định vị phiên bản mặc định của Java để chạy.

Bản sao của java.exeđể chạy được tìm thấy bằng cách sử dụng PATHbiến môi trường. Trừ khi bạn thực hiện các bước để thay đổi điều này, theo mặc định, một bản sao sẽ được tìm thấy trong thư mục Windows. Vì bản sao này không nằm trong thư mục thời gian chạy Java, nó định vị một bản sao bằng cách xem sổ đăng ký.

Vì vậy, bạn cần phải sửa đổi sổ đăng ký hoặc đặt phiên bản Java bạn muốn trước thư mục Windows trong của bạn PATH.


11
Mở ở đây. Xem chỉnh sửa của tôi ở trên. Yup, điều đó đã giải quyết nó. Hai lưu ý: đầu tiên, có vẻ như trình cài đặt Java đã thực sự đưa java.exe vào Windows \ System32. Điều này thật đáng kinh ngạc đối với tôi. Thứ hai, khi bạn sửa đổi đường dẫn trong Máy tính / Thuộc tính / Cài đặt hệ thống nâng cao / Biến môi trường, bạn phải sửa đổi đường dẫn hệ thống , không phải đường dẫn người dùng . Đường dẫn hệ thống đặt chính nó lên hàng đầu.
ccleve

2
Tôi cũng sẽ nhấn mạnh quan điểm của user237815 rằng có vẻ như trình cài đặt Java thực sự thả java.exe của nó vào Windows \ System32. Điều này chắc chắn không phải là trực quan đối với tôi. Chỉ sau khi kiểm tra "java -version" từ bảng điều khiển, tôi mới đạt được bất kỳ mức độ thoải mái nào mà Windows hiện đang sử dụng java.exe mà tôi muốn từ cài đặt JDK của mình thay vì một số phiên bản trước đó và không mong muốn.
John Tobler

17
Vấn đề cũng đã được giải quyết trong trường hợp của tôi bằng cách đổi tên java.exe, javaw.exe và javaws.exe trong thư mục Windows / System32 của tôi. Sau đó, và chỉ khi đó, không java -version hiển thị các phiên bản được thiết lập trong JAVA_HOME và PATH
Inversus

6
Bạn đã cứu ngày của tôi! Di chuyển mục nhập liên quan đến JDK trước Windows trong PATH đã giải quyết được sự cố. Cảm ơn bạn rất nhiều!
the_dark_destructor

9
Tôi đã đặt biến %JAVA_HOME%\binở vị trí đầu tiên pathtrên Windows 10 và làm việc với tôi.
Wendel

30

Trong Windows 8, bạn có thể muốn xóa C:\ProgramData\Oracle\Java\javapath thư mục.

từ con đường

Nó đã giải quyết được vấn đề của tôi.


5
Trong windows 10, nó có: C: \ Program Files (x86) \ Common Files \ Oracle \ Java \ javapath. Điều này được tự động thêm vào biến Đường dẫn hệ thống. Xóa rằng đặt vị trí đường dẫn tùy chỉnh của bạn.
Dexter

1
nhận xét trên đã giúp trong trường hợp windows 10
Saba Ahang

23

Tôi cũng gặp phải vấn đề này. Tôi đang chạy 1.6 nhưng muốn xây dựng mã mà tôi đang làm việc với 1.5. Tôi đã thay đổi JAVA_HOMEPATH(cả người dùng và hệ thống) không có kết quả.

Câu trả lời là bộ cài đặt cho 1,6 giảm java.exe, javaw.exejavaws.exevào tôi Windows\System32thư mục (Windows 7).

Tôi giải quyết nó bằng cách đổi tên các tập tin để java_wrong.exe, javaw_wrong.exejavaws_wrong.exe. Chỉ sau khi làm điều đó, nó mới chọn đúng phiên bản java như được định nghĩa trong JAVA_HOMEPATH. Do đó, tôi đã đổi tên các tệp vì điều đó đã xóa chúng theo cách dễ dàng đảo ngược.

Hi vọng điêu nay co ich!


10
Thay vì đổi tên, bạn có thể sửa đổi biến PATH quy định cụ thể như giá trị đầu tiên% JAVA_HOME% \ bin, cách mà nó sẽ là giá trị đầu tiên nó sẽ mất
maxivis

1
@maxivis Cảm ơn. Tôi đoán vấn đề có thể là thứ tự của các phần tử PATH như Windows \ System32 có trước JAVA_HOME. Tôi chỉ đơn giản là đổi tên chúng để chúng bị xóa một cách hiệu quả theo cách có thể đảo ngược.
Inversus

Bằng cách nào đó thiết lập JAVA_HOME trong đường dẫn không hoạt động theo bất kỳ cách nào đối với tôi, điều này thực sự đã giải quyết được nó.
Guilherme Orioli,

12

Windows không bỏ qua bất cứ điều gì. Đây là một vấn đề với thiết lập của bạn; Windows chỉ sử dụng những gì bạn cung cấp. Nó không có kiến ​​thức đặc biệt về JAVA_HOME.

CLASSPATHkhông liên quan gì đến Windows. Đối với Windows, nó chỉ là một biến môi trường được mở rộng đến vị trí thư mục.

Kiểm tra %PATH%biến môi trường của bạn . Đó là điều khiến Windows tìm thấy cái này trước cái kia. Đường dẫn (như bài đăng bạn liên kết đến đã nói) phải trỏ đến %JAVA_HOME%\bin;<remainder of path>. Một lần nữa, bài đăng mà bạn đã liên kết đã cung cấp cho bạn một cách để thiết lập điều này bằng cách sử dụng một tệp hàng loạt.

(Đối với những người khác có thể không biết điều này: Cách dễ nhất để kiểm tra% PATH% là mở dấu nhắc lệnh và nhập echo %PATH%. Bạn cũng có thể đến đó bằng cách nhấp chuột phải vào Computerngăn bên phải của Menu Bắt đầu và chọn Properties, sau đó Advanced System Settings, và Environmental Variablesnút tne .)


@erickson: Được. Cảm ơn - Tôi sẽ sửa lại. Tuy nhiên, nó vẫn không liên quan gì đến Windows, đó là điểm của câu trả lời của tôi. :)
Ken White

Hiểu rồi, tôi chỉ lo rằng có thể tạo ra một quan niệm sai lầm mới ; Java không biết gì nhiều JAVA_HOMEhơn Windows.
erickson

Tôi đánh giá cao sự sửa chữa. Bản thân tôi không phải là một người Java (kinh nghiệm hạn chế cho đến nay), vì vậy rất tốt để biết để tham khảo trong tương lai.
Ken White

1
JAVA_HOMEnên được đặt thành thư mục gốc của cài đặt java. Đường dẫn nên có %JAVA_HOME%\bin;&lt;remainder of path%gt;, nếu không bạn sẽ gặp khó khăn khi không "tìm thấy" java, javac, v.v. Tất nhiên, Windows chỉ thực sự xem xét PATHbiến, nhưng một số công cụ liên quan đến java JAVA_HOMEthỉnh thoảng sẽ xem xét .
Edwin Buck

@Edwin: Đã sửa lỗi mất tích \bin. Cảm ơn.
Ken White

6

Tôi gặp vấn đề tương tự. Tôi đã cài đặt nhiều phiên bản Java và vì lý do nào đó, Java 1.7 đang được sử dụng thay vì Java 1.6, mặc dù tôi đã chỉ định trong đường dẫn sử dụng 1.6 (C: \ jdk1.6.0_45_32 \ bin).

Tôi đã phải di chuyển đường dẫn của JDK mà tôi muốn sử dụng (1.6) để trở thành mục nhập đầu tiên trong biến môi trường PATH để đảm bảo Windows sử dụng 1.6 thay vì 1.7.

Vì vậy, ví dụ, biến môi trường PATH trước đây là:

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

và sau khi tôi chuyển jdk lên đầu tiên, nó hoạt động:

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

Tôi đoán trình cài đặt Windows của Java 1.7 đã cài đặt nó vào một số thư mục khác đã có trong PATH, do đó sẽ được sử dụng trước tiên thay vì mục nhập PATH tùy chỉnh được chỉ định C: \ jdk1.6.0_45_32 \ bin;


cảm ơn người anh em. Di chuyển đường dẫn JAVA_HOME \ bin làm phần tử đầu tiên của biến Path đã cứu mạng tôi.
ÖMER TAŞCI

4

Đối với Trường hợp của tôi trong 'Path'biến đã có một tham số được thêm vào như ' C:\ProgramData\Oracle\Java\javapath;'. Vị trí này là có java.exe, javaw.exejavaws.exetừ java 8 được mới được cài đặt thông qua jdk.exetừ Oracle.

Tôi đã xóa văn bản này khỏi Đường dẫn nơi Đường dẫn của tôi đã có %JAVA_HOME%\binnó.

Bây giờ, biến 'JAVA_HOME'đang kiểm soát phiên bản Java của tôi mà tôi muốn.


4

nhập mô tả hình ảnh ở đâyGiả sử bạn đã cài đặt JDK 10 sau JDK 8 và trong đường dẫn đặt biến môi trường hệ thống như "C: \ ProgramData \ Oracle \ Java \ javapath" thì kiểm soát phiên bản Java bằng đường dẫn này. nó sẽ bỏ qua đường dẫn JAVA_HOME thậm chí jdk 1.8 được đặt ở đây Vì vậy, hãy xóa "C: \ ProgramData \ Oracle \ Java \ javapath" trong đường dẫn để có được hiệu lực của đường dẫn JAVA_HOME


2

Tôi đã cài đặt Java 7 và 8 và tôi muốn chuyển hướng sang java 7 nhưng phiên bản java trong cửa sổ nhắc cmd của tôi hiển thị Java 8.
Đã thêm đường dẫn thư mục bin Java 7 ( C: \ Program Files \ Java \ jdk1.7.0_10 \ bin ) đến biến PATH ở cuối, nhưng không hoạt động và hiển thị Java 8. Vì vậy, tôi đã thay đổi đường dẫn Java 7 thành giá trị bắt đầu của đường dẫn và nó đã hoạt động.
Mở cửa sổ nhắc cmd mới và kiểm tra phiên bản java của tôi và bây giờ nó hiển thị Java 7


1

Đặt biến môi trường Đường dẫn thành thư mục jdk / bin mong muốn của bạn


1

Trong trường hợp của tôi, tôi đã cài đặt Java 7 và 8 (cả x64) và tôi muốn chuyển hướng sang java 7 nhưng mọi thứ được thiết lập để sử dụng Java 8. Java sử dụng biến môi trường PATH:

C: \ ProgramData \ Oracle \ Java \ javapath

là tùy chọn đầu tiên để tìm thời gian chạy thư mục của nó (là một thư mục ẩn). Đường dẫn này chứa 3 liên kết tượng trưng không thể chỉnh sửa.

Trong máy tính của tôi, biến môi trường PATH trông giống như sau:

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

Trong trường hợp của tôi, Nó sẽ trông như thế này:

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

Tôi đã phải cắt và dán các liên kết tượng trưng vào một nơi khác để java không thể tìm thấy chúng và tôi có thể khôi phục chúng sau.

Sau khi thiết lập các biến môi trường JAVA_HOME và JRE_HOME thành thời gian chạy của thư mục java mong muốn (trong trường hợp của tôi là Java 7), lệnh java -versionsẽ hiển thị thời gian chạy java mong muốn của bạn. Tôi nhận xét rằng không cần phải gây rối với sổ đăng ký.

Đã thử nghiệm trên Win7 x64.


1

Sự cố này có thể là do các phiên bản Java trước đó được cài đặt trong Hệ thống của bạn. Trước tiên, hãy kiểm tra các Biến môi trường của bạn một cách cẩn thận và xóa tất cả các Biến môi trường liên quan đến các phiên bản trước của JAVA và thay thế các đường dẫn đó thành

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

0

Có một yếu tố bổ sung ở đây; ngoài các tệp thực thi java mà cài đặt java đặt ở bất cứ nơi nào bạn yêu cầu đặt chúng, trên windows, trình cài đặt java cũng đặt bản sao của một số tệp thực thi đó trong thư mục windows system32 của bạn, vì vậy bạn có thể sẽ sử dụng mà mọi tệp thực thi java đã từng được cài đặt gần đây nhất.


0

Đề phòng trường hợp bạn đang sử dụng tệp .BAT làm Dịch vụ Windows, tôi khuyên bạn nên gỡ cài đặt dịch vụ Windows và cài đặt lại nó sau khi thay đổi% JAVA_HOME% để trỏ đến phiên bản Java phù hợp ..


0

Sau khi vật lộn với vấn đề này một thời gian và nghiên cứu về nó, cuối cùng tôi đã giải quyết được nó theo các bước sau:

1) cài đặt phiên bản jdk 12
2) Tạo biến mới trong biến hệ thống
3) Đặt tên là JAVA_HOME và cung cấp đường dẫn cài đặt jdk
4) thêm biến này vào đường dẫn và di chuyển nó lên trên cùng.
5) đi tới C: \ Program Files (86) \ Common Files \ Oracle \ Java \ javapath và thay thế java.exe và javaw.exe bằng các tệp tương ứng có cùng tên từ thư mục pathtojavajdk / bin

Cuối cùng, tôi đã kiểm tra phiên bản mặc định của java trong cmd với "java -version" và nó đã hoạt động!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.