2009-03-16 31 views
5

Lý do là dài và nhàm chán, nhưng tôi cần chạy một tập lệnh Ant để biên dịch mã Java 1.5 từ một ứng dụng Java 1.4. Tôi cứ bị lỗi này, mặc dù:Cài đặt JAVA_HOME khi chạy Ant từ Java

BUILD FAILED 

build.xml:16: Unable to find a javac compiler; 
com.sun.tools.javac.Main is not on the classpath. 
Perhaps JAVA_HOME does not point to the JDK. 
It is currently set to "C:\j2sdk1.4.2_16\jre" 

Trong mã của tôi, tôi có:

Project p = new Project(); 
p.setUserProperty("ant.file", buildFile.getAbsolutePath()); 
p.setProperty("java.home", "C:\Program Files\Java\jdk1.6.0_04"); 
p.fireBuildStarted(); 
p.init(); 
// so on and so forth 

nhưng nó bỏ qua nó. Tôi cũng đã thử p.setUserProperty (String, String), nhưng điều đó cũng không làm được điều này. Có cách nào để làm điều đó mà không đưa ra một quy trình riêng biệt?

+0

FYI: 'java.home' phải được đặt thành' $ JAVA_HOME/jre', không phải là '$ JAVA_HOME'. –

Trả lời

5

Nhiệm vụ javac trong tệp dựng của bạn có fork="yes"? Nếu không, thì không quan trọng thuộc tính java.home được đặt thành; ant sẽ cố gắng gọi phương thức javac Main trong cùng một quá trình java, mà từ lỗi của bạn là một JRE, không phải là một JDK.

EDIT Hãy thử thiết lập các executable tài sản của nhiệm vụ javac của bạn để đường dẫn đầy đủ đến javac nhị phân và thêm compiler="extJavac" với nhiệm vụ.

+0

Thêm fork = "yes" không trợ giúp - ít nhất javac chạy, nhưng nó vẫn là phiên bản sai. –

+0

Tôi đang tìm kiếm một cái gì đó giống như tài sản "thực thi" và chỉ không nhìn thấy nó. Đó là gây phiền nhiễu mà tôi phải đặt nó cho mỗi nhiệm vụ javac, nhưng nó hoạt động. Cảm ơn. –

1

Không nên tăng gấp đôi dấu gạch chéo ngược?

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04"); 
+0

. Tôi nghĩ rằng đã xảy ra sự cố khi dán vào StackOverflow. –

0

Bạn đã đặt biến môi trường JAVA_HOME và ANT_HOME đúng chưa? Nếu bạn đang thiết lập thông qua mã nó nên làm việc mặc dù.

Đồng thời kiểm tra xem thư mục% JAVA_HOME% \ bin của bạn% ANT_HOME% \ bin có nằm trong biến môi trường 'đường dẫn' hay không.

Sự cố của bạn có vẻ như với% JAVA_HOME% \ bin không có trong envt. thay đổi đường dẫn mặc dù.

0

Một cách khác để thực hiện công việc này là thêm 'tools.jar' vào đường dẫn lớp của bạn. Trình biên dịch javac được chứa trong jar này.

java -cp $ JAVA_HOME/lib/tools.jar ...

0

tùy chọn javac có sẵn trong tools.jar. Trong nhật thực, ngay cả khi JRE HOME của bạn trỏ đến một jdk, tất cả các thư viện hệ thống trỏ tới JDK_HOME \ jre \ lib. Không có tools.jar. Bạn có thể thêm tools.jar dưới dạng tệp Jar bên ngoài. Điều này sẽ giải quyết vấn đề của bạn

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