Làm cách nào để chuyển đổi chương trình Java của tôi thành tệp .exe? [đóng cửa]


500

Nếu tôi có tệp nguồn Java (* .java) hoặc tệp lớp (*. Class), làm cách nào tôi có thể chuyển đổi tệp thành tệp .exe?

Tôi cũng cần một trình cài đặt cho chương trình của tôi.


1
hack đơn giản cho các applet: viết mã C với hàm chính và lệnh gọi hàm "system" giống như system ("appletviewer java_src_file");
Madhusoodan P

1
.Exe sẽ hoạt động trong hệ thống windows không có JRE?
Arpit Agarwal

Chỉ cần hoàn thành (không tự mình thử vì chúng tôi cần trình bao bọc exe, không phải trình cài đặt): Các gói trình cài đặt cũng có thể được tạo bằng javapackager (xem docs.oracle.com/javase/8/docs/technotes/guides/deploy/ tựa ) . Để tạo trình cài đặt EXE hoặc MSI, cần cài đặt và cài đặt Inno hoặc WiX.
anre 17/03/2017

Câu trả lời:


324

javapackager

Công cụ Java Packager biên dịch, gói và chuẩn bị các ứng dụng Java và JavaFX để phân phối. Lệnh javapackager là phiên bản dòng lệnh.

- Tài liệu của Oracle

Các javapackagertàu tiện ích với JDK. Nó có thể tạo tập tin .exe với -native execờ, trong số nhiều thứ khác.

WinRun4J

WinRun4j là một trình khởi chạy java cho windows. Nó là một thay thế cho javaw.exe và cung cấp các lợi ích sau:

  • Sử dụng tệp INI để chỉ định classpath, lớp chính, vm args, chương trình args.
  • Tên thực thi tùy chỉnh xuất hiện trong trình quản lý tác vụ.
  • JVM bổ sung lập luận để sử dụng bộ nhớ linh hoạt hơn.
  • Biểu tượng thay thế tích hợp cho biểu tượng tùy chỉnh.
  • [thêm điểm đạn theo sau]

- Trang web của WinRun4J

WinRun4J là một tiện ích nguồn mở. Nó có nhiều tính năng.

gói

Đóng gói JAR, tài sản và JVM của bạn để phân phối trên Windows, Linux và Mac OS X, thêm tệp thực thi gốc để làm cho nó xuất hiện như một ứng dụng gốc. Packr phù hợp nhất cho các ứng dụng GUI.

- packr README

packr là một công cụ mã nguồn mở khác.

Mã não

JSmooth là một Wrapper thực thi Java. Nó tạo các trình khởi chạy Windows gốc (.exe tiêu chuẩn) cho các ứng dụng java của bạn. Nó làm cho việc triển khai java mượt mà hơn và thân thiện với người dùng hơn, vì nó có thể tự tìm thấy bất kỳ máy ảo Java đã cài đặt nào.

- Trang web của JSmooth

JSmooth là mã nguồn mở và có các tính năng, nhưng nó rất cũ. Bản phát hành cuối cùng là vào năm 2007.

JexePack

JexePack là một công cụ dòng lệnh (tuyệt vời cho kịch bản tự động) cho phép bạn đóng gói ứng dụng Java (tệp lớp), tùy ý cùng với các tài nguyên của nó (như GIF / JPG / TXT / etc), vào một Windows EXE 32 bit được nén , chạy bằng Môi trường chạy thi hành Java của Sun. Cả hai ứng dụng giao diện điều khiển và cửa sổ đều được hỗ trợ.

- Trang web của JexePack

JexePack là phần mềm dùng thử. Thanh toán là cần thiết để sử dụng sản xuất và các tệp exe được tạo bằng công cụ này sẽ hiển thị "lời nhắc" mà không cần thanh toán. Ngoài ra, bản phát hành cuối cùng là vào năm 2013.

Cài đặt ở mọi nơi

InstallAnywhere giúp nhà phát triển dễ dàng tạo phần mềm cài đặt chuyên nghiệp cho mọi nền tảng. Với InstallAnywhere, bạn sẽ thích ứng nhanh với các thay đổi của ngành, tiếp cận thị trường nhanh hơn và mang lại trải nghiệm hấp dẫn cho khách hàng. Và biết lỗ hổng của các thành phần OSS của dự án trước khi bạn giao hàng.

- Trang web của InstallAnywhere

InstallAnywhere là gói thương mại / doanh nghiệp tạo trình cài đặt cho các chương trình dựa trên Java. Nó có thể có khả năng tạo tập tin .exe.

Các tệp JAR có thể thực thi

Thay thế cho các tệp .exe, bạn có thể tạo tệp JAR tự động chạy khi nhấp đúp, bằng cách thêm một điểm nhập vào tệp kê khai JAR .


Để biết thêm thông tin

Một nguồn thông tin tuyệt vời về chủ đề này là bài viết của Excelsior " Chuyển đổi Java sang EXE - Tại sao, Khi nào, Khi nào và Như thế nào ".

Xem thêm bài viết đồng hành " Công cụ chuyển đổi JAR sang EXE tốt nhất, miễn phí và thương mại ".


Tốt hơn là sử dụng nhật thực và Jsmooth. Thực hiện theo các bước regilanj.wordpress.com/2017/11/19/ khăn
Maria Irudaya Regilan J

Bất kỳ trong số này sẽ làm việc cho tình huống của tôi? stackoverflow.com/questions/56674075/
trộm

Hãy thử điều này: javaexe.free.fr/html/en/JavaExe.html
CamelTM

112

Launch4j

Launch4j là một công cụ đa nền tảng để gói các ứng dụng Java được phân phối dưới dạng các tệp trong các tệp thực thi gốc Windows nhẹ. Tệp thực thi có thể được cấu hình để tìm kiếm một phiên bản JRE nhất định hoặc sử dụng một phiên bản đi kèm và có thể đặt các tùy chọn thời gian chạy, như kích thước heap ban đầu / tối đa. Trình bao bọc cũng cung cấp trải nghiệm người dùng tốt hơn thông qua biểu tượng ứng dụng, màn hình giật gân trước JRE gốc, tên quy trình tùy chỉnh và trang tải xuống Java trong trường hợp không thể tìm thấy JRE thích hợp.

- Trang web của Launch4j


35

CẬP NHẬT: GCJ đã chết. Nó đã chính thức bị xóa khỏi dự án GCC vào năm 2016. Ngay cả trước đó, nó đã thực sự bị bỏ rơi trong bảy năm và trong mọi trường hợp, nó không bao giờ đủ hoàn thành để phục vụ như là một triển khai Java thay thế khả thi.

Đi tìm một trình biên dịch AOT Java khác.

GCJ: Trình biên dịch GNU cho Java có thể biên dịch mã nguồn Java thành mã máy gốc, bao gồm các tệp thực thi của Windows.

Mặc dù không phải mọi thứ trong Java đều được hỗ trợ theo GCJ, đặc biệt là các thành phần GUI (xem API Java nào được hỗ trợ? Câu hỏi hỗ trợ hoàn chỉnh như thế nào từ Câu hỏi thường gặp ). Tôi đã không sử dụng GCJ nhiều, nhưng từ thử nghiệm hạn chế tôi đã thực hiện với các ứng dụng bảng điều khiển, có vẻ ổn.

Một nhược điểm của việc sử dụng GCJ để tạo một tệp thực thi độc lập là kích thước của EXE kết quả có thể khá lớn. Một lần tôi đã biên dịch một ứng dụng bảng điều khiển tầm thường trong GCJ và kết quả là có thể thực thi được khoảng 1 MB. (Có thể có những cách xung quanh vấn đề này mà tôi không biết. Một tùy chọn khác sẽ là các chương trình nén thực thi.)

Về các trình cài đặt mã nguồn mở, Hệ thống cài đặt tập lệnh Nullsoft là một trình cài đặt có thể viết được. Nếu bạn tò mò, có những ví dụ do người dùng đóng góp về cách phát hiện sự hiện diện của JRE và tự động cài đặt nó nếu JRE được yêu cầu không được cài đặt. (Chỉ để cho bạn biết, tôi chưa sử dụng NSIS trước đây.)

Để biết thêm thông tin về việc sử dụng NSIS để cài đặt các ứng dụng Java, vui lòng xem câu trả lời của tôi cho câu hỏi " Cách tốt nhất để phân phối các ứng dụng Java là gì? "


2
Dự án thực sự đã chết, như tôi có thể thấy. Không có tin tức trên trang chính
Vladislav Rastrusny

Sự phát triển Java GNU đã được chuyển sang OpenJDK khá nhiều, vì các nguồn không phải của Oracle không thể truy cập vào TCK để xác thực.
Thorbjørn Ravn Andersen

25

Bạn có thể tạo một tệp bó với mã sau:

start javaw -jar JarFile.jar

và chuyển đổi .bat thành .exe bằng bất kỳ trình chuyển đổi .bat sang .exe nào.


2
Một trình bao bọc tốt sẽ mang lại JRE hoặc cài đặt nó nếu cần và xử lý các tình huống lỗi.
Thorbjørn Ravn Andersen

16

Chúng tôi đang sử dụng Install4J để xây dựng trình cài đặt cho các môi trường windows hoặc unix.

Nó dễ dàng tùy chỉnh đến mức bạn muốn viết tập lệnh cho các hành động đặc biệt không thể thực hiện được với các hộp thoại tiêu chuẩn. Nhưng ngay cả khi chúng tôi thiết lập các dịch vụ windows với nó, chúng tôi chỉ sử dụng các thành phần tiêu chuẩn.

  • trình cài đặt + launcher
  • cửa sổ hoặc unix
  • kịch bản trong Java
  • nhiệm vụ kiến
  • nhiều bảng điều khiển và hành động tiêu chuẩn tùy chỉnh
  • tùy chọn bao gồm hoặc tải xuống JRE
  • cũng có thể khởi chạy dịch vụ windows
  • đa ngôn ngữ

Tôi nghĩ Launch4J đến từ cùng một công ty (chỉ là trình khởi chạy - không có trình cài đặt).

Tái bút: thật đáng buồn là tôi không được trả tiền cho sự chứng thực này. Tôi chỉ thích công cụ đó.


15

Java Web Start mới nhất đã được cải tiến để cho phép hoạt động ngoại tuyến tốt cũng như cho phép "cài đặt cục bộ". Đó là giá trị nhìn vào.

EDIT 2018: Java Web Start không còn được đóng gói với JDK mới nhất. Thay vào đó, Oracle đang hướng tới mô hình "triển khai ứng dụng của bạn với mô hình JRE kèm theo".


Rõ ràng JWS đã bị thắt chặt an ninh rất nhiều, đến nỗi nó đòi hỏi nhiều nỗ lực hơn trước đây để chạy. Nó vẫn có thể hữu ích cho các trình cài đặt, mặc dù.
Thorbjørn Ravn Andersen

9

Nếu bạn cần chuyển đổi toàn bộ ứng dụng của mình sang mã gốc, tức là EXE cộng với DLL, thì có ExcelsiorJET . Tôi thấy nó hoạt động tốt và cung cấp một giải pháp thay thế cho việc đóng gói JRE.


Thực sự đắt tiền, mặc dù.
Mordechai


6

Tôi có thể nói launch4j là công cụ tốt nhất để chuyển đổi mã nguồn java (.java) thành tệp .exe Bạn thậm chí có thể gói một jre với nó để phân phối và exe thậm chí có thể được biểu tượng hóa. Mặc dù kích thước của ứng dụng tăng lên, nó đảm bảo rằng ứng dụng sẽ hoạt động hoàn hảo ngay cả khi người dùng không cài đặt jre. Nó cũng đảm bảo rằng bạn có thể cung cấp jre cụ thể cần thiết cho ứng dụng của bạn mà không cần người dùng phải cài đặt riêng. Nhưng thật không may, java mất tầm quan trọng của nó. Hỗ trợ đa nền tảng của nó hoàn toàn bị bỏ qua và ứng dụng cuối cùng chỉ được hỗ trợ cho windows. Nhưng đó không phải là vấn đề lớn, nếu bạn chỉ phục vụ cho người dùng windows.


5

Bạn có thể sử dụng Janel . Điều này cuối cùng hoạt động như một trình khởi chạy ứng dụng hoặc trình khởi chạy dịch vụ (có sẵn từ 4.x).


4

Ngoài ra, bạn có thể sử dụng một số trình dịch java-to-c (ví dụ: JCGO ) và biên dịch các tệp C được tạo thành tệp nhị phân gốc (.exe) cho nền tảng đích.


2
Tôi rất hoài nghi về hiệu quả của phương pháp này. Tôi phải xem nó để tin điều đó (nghĩ về thực tế rằng hầu hết mã Java là các lệnh gọi API đến JRE và tất cả những thứ đó không có trên C, không bao giờ thấy sự khác biệt trong cách ngôn ngữ hoạt động).
Camilo Martin

3

Tôi có thể được tha thứ vì đã chống lại việc chuyển đổi chương trình java sang Ứng dụng .exe và tôi có lý do của tôi. cái chính là chương trình java có thể được biên dịch thành tệp jar từ Rất nhiều IDE. Khi chương trình ở định dạng .jar, nó có thể chạy trong Nhiều nền tảng trái ngược với .exe sẽ chỉ chạy trong Môi trường rất hạn chế. Tôi cho ý tưởng rằng các chương trình Java sẽ không được chuyển đổi sang exe trừ khi nó rất cần thiết. Người ta luôn có thể viết các tệp .bat chạy chương trình Java trong khi đó là tệp jar.

nếu thực sự cần thiết để chuyển đổi nó thành exe, trình chuyển đổi Jar2Exe âm thầm làm điều đó và người ta cũng có thể đính kèm các Thư viện được biên dịch cùng với Ứng dụng chính.


Vấn đề là, sức mạnh của java là tính di động, nhưng nhiều người chỉ cần một exe windows cơ bản. Cá nhân, tôi thích khái niệm của java ... nhưng muốn phân phối thứ gì đó mà người dùng của tôi có thể chạy mà không cần phải tải xuống JRE.
Balmipour

2

Bạn có thể chuyển đổi jar sang exe bằng jar2exe . Tuy nhiên bạn cần phải mua phần mềm. Nếu bạn cần một phần mềm nguồn mở, tôi sẽ đề xuất JSmooth .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.