2011-10-20 26 views
6

Tôi có một ứng dụng Java, tôi muốn cung cấp khả năng sử dụng để biên dịch mã nguồn Java (Sử dụng giao diện JavaCompiler)Java: cách phát hiện thời gian chạy java hiện tại là JRE hoặc JDK?

Nếu người dùng chạy các ứng dụng trên một JRE, ứng dụng của tôi nên nói với người dùng rằng không có trường hợp JavaCompiler aviable.

để biết cách phát hiện JDK hoặc JRE trong chương trình java programe?

Trả lời

11

Bạn có thể yêu cầu triển khai JavaCompiler từ ToolProvider. Nếu nó trả null, không có thi hành JavaCompiler sẵn:

JavaCompiler c = ToolProvider.getSystemJavaCompiler(); 
if (c == null) { 
    // JRE 
} 
+0

Tôi không chắc chắn nếu mà làm việc - nó có vẻ như 'cái JavaCompiler' giao diện riêng của mình luôn có sẵn, nhưng sự khác biệt của JDK vs JRE phụ thuộc đang triển khai. –

+0

@David: Đã cập nhật. – axtavt

+0

nó hoạt động tốt khi JDK được cài đặt đúng cách và 'javac' có thể được tìm thấy trên đường dẫn lớp. nhưng nếu tôi muốn cho phép người dùng chạy nó, ngay cả khi không thể truy cập 'javac'? tất cả tôi muốn biết là nếu tôi đang chạy trên JDK hoặc JRE ... xem [liên kết này] (http://www.java.net/node/688208) - nó có thể được giải quyết nếu người dùng định nghĩa biến môi trường . nhưng kể từ khi tôi không có nhu cầu cho 'javac', tôi không muốn làm phiền người dùng với chi phí bổ sung trên cấu hình này ... –

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