2010-07-30 49 views
20

Khi được hỏi và trả lời here, python có cách triển khai hữu ích không cần trình cài đặt. Java có thể làm điều tương tự không?Chạy java mà không cần cài đặt jre?

  • Có cách nào để chạy tệp jar của Java mà không cần cài đặt jre không?
  • Có công cụ nào giống như java2exe (win32), java2bin (linux) hoặc java2app (mac) không?
+0

Chủ đề tương tự: http://stackoverflow.com/questions/664858/how-can-you-package-an-executable-jar-with-a-portable-jre – h3xStream

Trả lời

14

Bạn có thể sử dụng Launch4j cho việc này. Cũng tài liệu và dễ sử dụng. Trong khi chương trình kết quả vẫn cần một JRE để chạy, bạn không phải cài đặt JRE trên hệ thống đích. Bạn có thể chỉ cần sao chép nó với ứng dụng của bạn và cho Launch4j đã tìm thấy nó hoặc chỉ quấn nó lên với mọi thứ khác.

+1

(Các) tệp JRE ở đâu? Với Mac, tôi tìm thấy /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/* và với PC tôi tìm thấy Java/jre6/lib. Tôi có phải sao chép tất cả các tệp đó không? – prosseek

+1

Bạn cần phải sao chép hai thư mục con jre6/lib và jre6/bin giữ lại cấu trúc thư mục con. Và nói với Launch4j nơi để tìm nó, tốt nhất là một đường dẫn tương đối từ thư mục thực thi. Cá nhân tôi đặt các thư mục bin và lib trong một subdir được gọi là jre bên cạnh thực thi của tôi. – haffax

-2

Bạn có thể nhận được một số may mắn với GCJ - đã không tự mình thử.

+1

Điều đó sẽ không bao giờ hoạt động. – TheLQ

0

bạn có thể đặt JRE vào trong ứng dụng của mình và tạo cài đặt hoặc cài đặt cho ứng dụng của bạn.

+7

"Tại sao ứng dụng máy tính đơn giản này 26 MB?" – TheLQ

+1

Ngoài ra nếu tôi thấy rằng một chương trình đã cài đặt bí mật mối đe dọa bảo mật như Java trên hệ thống của tôi mà không có sự đồng ý của tôi, tôi sẽ cực kỳ tức giận –

0

Bạn có thể muốn xem Eclipse thực hiện nó như thế nào - nó có bản gốc .exe có thể sử dụng JRE cục bộ (để cài đặt).

4

Để tạo tệp thực thi gốc, bạn có thể sử dụng Excelsion Jet, để biên dịch Java thành mã gốc. Chúng tôi đã sử dụng nó cho một dự án tại nơi làm việc và chúng tôi phải thực hiện sửa đổi không đối với mã nguồn ban đầu (JDK của Sun đã nhắm mục tiêu).

+1

Câu hỏi thường gặp: Excelsior JET không chỉ là trình đóng gói các ứng dụng Java vào các tệp nhị phân Windows EXE/Linux. Nó thực sự biên dịch các tệp lớp Java của bạn thành các lệnh x86 (IA-32) nguyên gốc. Các tập tin thực thi kết quả cần Excelsior JET Runtime để chạy, nhưng không phải là Sun JRE. – TheLQ

+0

"Các tập tin thực thi kết quả cần thời gian chạy Excelsior JET để chạy". Điều này đúng, nhưng cũng có thể nhúng thời gian chạy này vào nhị phân được tạo. Sau đó, nhị phân sẽ tự cung tự cấp. Trong quá trình này, tôi tin rằng có thể loại bỏ thời gian chạy để chỉ giữ lại các phần được sử dụng trong ứng dụng đã biên dịch. – barjak

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