2009-09-07 69 views
13

Tôi sử dụng Eclipse với các tập lệnh kiến ​​và Eclipse hoạt động tốt với cài đặt JRE mặc định trên Windows XP.Làm cách nào để biến JDK thành JRE mặc định?

Sự phiền toái xảy ra khi tôi muốn chạy các tập lệnh kiến ​​biên dịch với thẻ javac, nơi nó không thành công vì không có tools.jar trong đường dẫn lớp.

Tôi đã có ý tưởng rằng nếu tôi có thể biến JDK trở thành Java mặc định trên Windows, thì tôi sẽ có những gì tôi có ngày hôm nay, cộng với kiến ​​làm việc ra khỏi hộp.

Việc này có thể thực hiện được không? Tôi đã bỏ lỡ điều gì trong quá trình cài đặt?


Chỉnh sửa: Tôi biết JAVA_HOME, nhưng đó là tẻ nhạt và dễ bị lỗi (bằng tay cập nhật biến môi trường khi một JDK tươi có sẵn không phải lúc nào một cái gì đó tôi nhớ).


Chỉnh sửa: Tôi đã tìm ra cách làm nhiệm vụ javac sử dụng trình biên dịch Eclipse (ecj.jar), hoạt động rất độc đáo.


Chỉnh sửa: Maven cũng hỗ trợ sử dụng trình biên dịch Eclipse, nhưng điều này dường như rất hiếm khi được sử dụng và với phiên bản cũ của ecj.jar. Tôi dự định sẽ xem xét điều này sau.


Chỉnh sửa: Sử dụng ecj với trình biên dịch maven-plugin 3.0 hoạt động rất tốt và cho phép xây dựng bằng JRE.


Chỉnh sửa: Tôi gặp sự cố với công cụ javadoc bị lỗi khi phân tích cú pháp bytecode do ecj tạo.

+1

Khi bạn chạy ant bạn đang chạy một tập tin thực thi, do đó khác hơn là các biến được khai báo trong tập tin thực thi bạn chỉ lựa chọn nào khác là môi trường vars. Phiên bản Java hiện tại có sẵn từ sổ đăng ký trên Windows (HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment), mà tôi tin rằng sẽ được cập nhật khi bạn cài đặt Java và bạn có thể nhìn thấy ở đó, nhưng nếu bạn hỏi tôi JAVA_HOME là lựa chọn dễ dàng nhất. –

Trả lời

14

Câu trả lời là "không", không có cách nào để đưa JDK trở thành JVM mặc định khi cài đặt.

Khi các câu trả lời khác chỉ ra, bạn có thể điều chỉnh đường dẫn và JAVA_HOME của bạn để trỏ đến JDK hoặc một JVM hoàn toàn khác. Đây là thực tế những gì cài đặt Java làm ở nơi đầu tiên.

Tuy nhiên, vấn đề của bạn là bạn muốn tools.jar được tìm thấy. Để làm điều này, bạn có thể sao chép nó vào thư mục ext dưới JVM mặc định của bạn. Kiểm tra cấu trúc tệp JDK here. Điều này có thể sẽ hoạt động.

Mặt khác, nếu điều chỉnh các biến JAVA_HOME và PATH cho Java dường như khó chịu, hãy nhớ rằng nó chỉ là một trong một loạt các điều chúng ta làm gì để giữ cho chúng ta mạnh just kidding, sucks that we still have to do this in 2009 http://www.smiley-faces.org/smiley-faces/smiley-face-smile.gif

+1

hoạt động! .. cảm ơn rất nhiều @Yar – learner

+3

"hãy nhớ rằng nó chỉ là một trong một loạt những điều chúng tôi làm để giữ cho chúng ta sắc nét"? Đánh dấu đầy đủ cho sự nhiệt tình nhưng kể từ khi tôi chỉ chạy vào này bản thân mình, cá nhân tôi muốn một hệ thống mà không đòi hỏi quá nhiều nắm tay. – Basic

+0

@ Bicic đó là tất cả tương đối, tôi nghĩ. Tôi đã ở với Objective-C (và Xcode) trong hai năm và công cụ này có vẻ dễ dàng. JDK và classpath về cơ bản là hai vấn đề duy nhất bạn có trong Java. –

2

Hãy thử thay đổi biến môi trường JAVA_HOME để trỏ đến JDK thay vì JRE.

Hoặc có thể bổ sung, thêm mục nhập PATH vào thư mục bin JDK trước bất kỳ thư mục hệ thống Windows nào.

tôi nghi ngờ JAVA_HOME là đủ để có được làm việc Ant, nhưng nó đôi khi tốt đẹp để có được phiên bản JDK của java vv trên con đường quá, để khi bạn chỉ cần chạy java từ dòng lệnh, bạn sẽ nhận được chính xác phiên bản giống như khi bạn chạy javac.

+1

Cảm ơn vì cách giải quyết khác mà tôi biết. Tôi chỉ rất mệt mỏi với việc duy trì những con trỏ này nếu một tinh chỉnh cài đặt đơn giản có thể làm được điều này. –

0

Điều này thường được thực hiện bằng cách đặt biến môi trường JAVA_HOME của bạn vào thư mục gốc JDK mà bạn muốn sử dụng.

Ví dụ từ một dòng lệnh hoặc tập tin thực thi bạn chỉ cần làm một cái gì đó như:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14 

Tuy nhiên để thiết lập JAVA_HOME vĩnh viễn thêm nó vào biến môi trường trên nâng cao tab trong tờ sở hữu cho My Máy tính.

1

Bạn có thể có thể viết một kịch bản WSH để tự động định cấu hình đường dẫn của bạn.

JScript này kịch bản chỉ cần in một số thông tin:

//file: jdk.js    usage: cscript /Nologo jdk.js 
var objShell = WScript.CreateObject("WScript.Shell"); 
function setJdk(version) { 
    try { 
    var jdk = objShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + 
     "JavaSoft\\Java Development Kit\\" + version + "\\JavaHome"); 
    if(jdk != null && jdk != "") { 
     jdk += "\\bin"; 
     var path = objShell.RegRead("HKEY_CURRENT_USER\\Environment\\Path"); 
     path = jdk + ";" + path; 
     WScript.Echo("Could set PATH to " + path + "\n"); 
    } 
    } catch(err) { /*probably key does not exist*/ } 
} 
setJdk("1.7"); 
setJdk("1.6"); 
setJdk("1.5"); 

Có một phương pháp RegWrite có thể được sử dụng để viết để đăng ký. Có một chút công việc liên quan đến việc xác định phiên bản mới nhất và tái định hướng đường dẫn, xóa các mục nhập lỗi thời và phân loại hệ thống so với đường dẫn người dùng. Không nghi ngờ gì nó có thể được sử dụng để thiết lập JAVA_HOME quá. Mục nhập JDK sẽ cần xuất hiện trước thư mục system32, vì trình cài đặt JRE đặt một số java.exe trong đó.

(Tôi không chắc chắn 100% nếu vỏ sẽ nhặt trên những thay đổi đó hay một biến khởi động lại/env tải lại của một số loại sẽ được yêu cầu.)

0

Rõ ràng Eclipse có thể biên dịch mà không có sự tools.jar . Tôi đoán rằng họ có một lệnh javac cụ thể có thể làm việc với một JRE (và không phải là một JDK); đây có thể là lý do tại sao họ có thể liệt kê các cảnh báo của họ.

Dù sao, tôi sẽ đi theo cách tiêu chuẩn (như đã đề xuất ở trên) và cài đặt JDK trên hệ thống của bạn. Bạn thậm chí có thể khởi động Eclipse với JDK cụ thể đó (mà không cần thay đổi JAVA_HOME) bằng cách tinh chỉnh tệp eclipse.ini (xem các instructions) này.

+0

Vâng, Eclipse có trình biên dịch gia tăng riêng của nó. Nó hoặc là Jikes hoặc nó được dựa trên nó (từ những gì tôi nhớ lại). – cjstehno

+0

jikes được viết bằng C++ nhưng ecj nên dựa trên nó. –

4

Sao chép tệp tools.jar vào một vị trí mà Eclipse đang tìm kiếm nó có thể hoạt động, nhưng lộn xộn và mong manh vì đó là một bước bạn có thể không nhớ trong lần nâng cấp JDK tiếp theo. Tốt hơn là thuyết phục Eclipse tìm kiếm nó ở vị trí thích hợp.

Đặt JAVA_HOME thành vị trí chính xác hoạt động đối với một số công cụ, nhưng Eclipse does not honor it.

Một vài điều để thử:

  • Hãy chắc chắn rằng JDK của bạn được xác định và chọn dưới Preferences-> Java-> JRE cài đặt.

  • Đảm bảo Ant đang được gọi bởi JDK. Một đầu mối là ở đầu của đầu ra Console, bạn sẽ thấy đường dẫn của javaw.exe đang được sử dụng . Nếu đường dẫn đó nằm trong JRE, cần có thêm sự thuyết phục hơn.Kiểm tra Chạy-> Công cụ bên ngoài-> Công cụ bên ngoài Cấu hình -> [Ant build] -> JRE và đảm bảo cài đặt ở đó trỏ đến JDK.

+0

bạn đã lưu ngày của tôi với thông tin mà nhật thực ghi đè nó cho kiến ​​ngay cả khi jdk mặc định được đặt chính xác ;-D –

9
  1. Tải JDK từ trang web
  2. Sau khi mọi thứ kết thúc, hãy vào Control Panel
  3. mở JAVA
  4. Bấm vào tab Java và chọn View
  5. Sẽ có một mục có trong danh sách. Thay đổi Đường dẫn Java từ JRE sang JDK mà bạn đã tải xuống, như sau: C:\Program Files\Java\<your_jdk_version>\bin\java.exe.
    Ví dụ, tôi trông như thế này: C:\Program Files\Java\jdk1.7.0_07\bin\java.exe
0

Trong số nguyên nhân này là doable. Không hiểu tại sao mọi người lại nói Không với câu hỏi này. Sao chép qua tools.jar không phải là một cách khôn ngoan, tôi đã gặp vấn đề khi sử dụng eclipese, Chỉ cần thêm jdk thay vì jre vào đường dẫn xây dựng của tôi và nó hoạt động.

Dưới đây là chi tiết:

http://www.gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx

+0

Điều này không trả lời được câu hỏi. –

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