2012-06-16 38 views
30

Tôi vừa mới cài đặt Java JDK 6u33 trong Windows XP. Mặc dù tôi không đặt biến môi trường PATH, tôi có thể chạy java -version trong dấu nhắc lệnh.Sự khác nhau giữa "system32 java.exe" và "Program Files Java jdk1.6.0_33 bin java.exe" là gì?

Khi tôi chạy lệnh này for %i in (java.exe) do @echo. %~$PATH:i, tôi nhận được kết quả này: C:\WINDOWS\system32\java.exe

Khi tôi kiểm tra máy tính của tôi, tôi thấy rằng có 2 java.exe:
1. C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2. C:\WINDOWS\system32\java.exe

Tôi có thể biết sự khác biệt giữa system32\java.exeProgram Files\Java\jdk1.6.0_33\bin\java.exe không? Tại sao chỉ có system32\java.exe được hiển thị khi tôi chạy for %i in (java.exe) do @echo. %~$PATH:i?

Tôi vẫn cần thêm C:\Program Files\Java\jdk1.6.0_33\bin\ vào biến môi trường PATH của mình?

Trả lời

26

Đặt biến số PATH chỉ để bạn có thể truy cập vào javac và các chương trình và công cụ khác trong thư mục bin jdk.

Các java.exe trong \windows\system32\ được cung cấp để không phải ai cũng cần phải thiết lập một biến PATH chỉ để chạy một chương trình java (từ dòng lệnh) chọn một phiên bản (tác phẩm mới nhất được cài đặt có vẻ như) của java cài đặt máy ảo (JVM) nếu có nhiều hơn một (công khai) được cài đặt.

Xem liên kết này để biết thêm:

http://mindprod.com/jgloss/javaexe.html#MULTIPLES

Trích:

Để những điều phức tạp hơn nữa java.exe trong system32 chỉ là một hình nộm. Có vẻ trong sổ đăng ký và sau đó quyết định java.exe thực sử dụng. JVM cuối cùng được cài đặt sẽ là phiên bản được sử dụng, ngay cả khi nó cũ hơn. Để chuyển đổi các JVM, bạn thường phải cài đặt lại JVM mà bạn muốn.

+11

Nó không phải là một giả "java.exe" và bạn không cần phải cài đặt lại, bạn đơn giản vượt qua phiên bản yêu cầu với tham số -version như 'java -version:" 1.6 "MyClass' để buộc 1,6 JRE trên máy trạm có cài đặt phiên bản muliple (xem http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html) – RealHowTo

+2

Đúng là bạn có thể bỏ qua nhu cầu cài đặt lại khóa học * nếu * bạn chuyển các tham số dòng lệnh, và bạn cũng có thể chỉ định đường dẫn đầy đủ đến thời gian chạy java thay thế (java.exe, javaw.exe hoặc javaws .exe). Không phải là rất "tự động ma thuật" cho hầu hết người dùng mặc dù. –

10

(Không phải là câu trả lời mà là nhận xét về câu trả lời của Mattias) Không chắc về doanh nghiệp "giả" này. Các java.exe trong system32 là một tập tin bình thường, thậm chí không phải là một liên kết tượng trưng hay khó. Mattias có thể đề cập đến sự cố được giải thích tại đây: http://msdn.microsoft.com/en-us/library/aa384187

Tóm lại, nếu bạn có hệ thống 64 bit và cài đặt Java, ứng dụng 32 bit sẽ không thấy java.exe (cũng không phải javaw. exe, javaws.exe) được cài đặt trong C: \ Windows \ System32 \ bởi vì chúng sẽ được trình bày với C: \ Windows \ SysWoW64 \ masquerading như C: \ Windows \ System32. Trình cài đặt không đặt bản sao của java.exe trong SysWoW64, do đó một ứng dụng 32 bit cố gắng khởi chạy Java sẽ không làm như vậy. Điều này sẽ câu đố người dùng nếu anh ta nhìn vào thư mục system32 bằng cách sử dụng explorer, vì explorer là một ứng dụng 64-bit và do đó sẽ thấy thư mục system32 "thực".

+4

Trên hệ thống 64 bit, bạn thường nên cài đặt cả phiên bản 64 bit và 32 bit của Java. –

+0

Tôi có cài đặt như vậy, nhưng ví dụ như 64bit Eclipse chạy Java 32 bit, bất kỳ ý tưởng tại sao? Khi tôi chạy 'java -version', nó cũng trả về phiên bản 32 bit. Có thể sửa đổi nó để sử dụng 64bit chủ yếu? – Betlista

+0

Betlista, bạn đã cài đặt cả hai JDK chưa? – Urhixidur

Các vấn đề liên quan