Jak przekonwertować mój program Java na plik .exe? [Zamknięte]

500

Jeśli mam plik źródłowy Java (* .java) lub plik klasy (* .class), jak mogę przekonwertować go na plik .exe?

Potrzebuję również instalatora dla mojego programu.

Waseem
źródło
1
prosty hack dla apletów: napisz kod C z main i wywołanie funkcji „system” jak system („appletviewer java_src_file”);
Madhusoodan P
1
Czy .exe działa w systemie Windows bez środowiska JRE?
Arpit Agarwal
Żeby być kompletnym (nie próbowałem tego sam, ponieważ potrzebowaliśmy opakowania exe, a nie instalatora): Pakiety instalatora można również tworzyć za pomocą javapackager (patrz docs.oracle.com/javase/8/docs/technotes/guides/deploy/... ) . Aby utworzyć instalator EXE lub MSI, należy dodatkowo pobrać i zainstalować Inno Setup lub WiX.
anre
Może być NSIS również pomaga; nsis.sourceforge.net/Java_Launcher
baris.aydinoz

Odpowiedzi:

324

javapackager

Narzędzie Java Packager kompiluje, pakuje i przygotowuje aplikacje Java i JavaFX do dystrybucji. Polecenie javapackager to wersja wiersza polecenia.

- Dokumentacja Oracle

Te javapackagerstatki gospodarcze z JDK. Może generować pliki .exe z -native exeflagą, między innymi.

WinRun4J

WinRun4j to program uruchamiający java dla systemu Windows. Jest to alternatywa dla javaw.exe i zapewnia następujące korzyści:

  • Używa pliku INI do określania ścieżki klasy, klasy głównej, argumentów vm, argumentów programu.
  • Niestandardowa nazwa pliku wykonywalnego wyświetlana w menedżerze zadań.
  • Dodatkowe argumenty JVM przemawiają za bardziej elastycznym użyciem pamięci.
  • Wbudowany zamiennik ikon niestandardowych.
  • [więcej punktów po kuli]

- Strona internetowa WinRun4J

WinRun4J to narzędzie typu open source. Ma wiele funkcji.

pakujący

Pakuje plik JAR, zasoby i JVM do dystrybucji w systemach Windows, Linux i Mac OS X, dodając natywny plik wykonywalny, aby wyglądał jak natywna aplikacja. Packr jest najbardziej odpowiedni dla aplikacji GUI.

- packr README

packr to kolejne narzędzie typu open source.

JSmooth

JSmooth to Java Executable Wrapper. Tworzy rodzime programy uruchamiające Windows (standardowe .exe) dla aplikacji Java. Sprawia, że ​​wdrażanie Java jest znacznie płynniejsze i przyjazne dla użytkownika, ponieważ może samodzielnie znaleźć każdą zainstalowaną maszynę wirtualną Java.

- Strona internetowa JSmooth

JSmooth jest open source i ma funkcje, ale jest bardzo stary. Ostatnie wydanie miało miejsce w 2007 roku.

JexePack

JexePack to narzędzie wiersza polecenia (idealne do automatycznego tworzenia skryptów), które pozwala spakować aplikację Java (pliki klas), opcjonalnie wraz z jej zasobami (takimi jak GIF / JPG / TXT / itp.), W jednym skompresowanym 32-bitowym pliku EXE systemu Windows , który działa przy użyciu środowiska Java Runtime Environment firmy Sun. Obsługiwane są zarówno aplikacje konsoli, jak i okna.

- Strona internetowa JexePack

JexePack to wersja próbna. Płatność jest wymagana do użytku produkcyjnego, a pliki exe utworzone za pomocą tego narzędzia będą wyświetlać „przypomnienia” bez zapłaty. Ostatnie wydanie miało miejsce w 2013 roku.

InstallAnywhere

InstallAnywhere ułatwia programistom tworzenie profesjonalnych programów instalacyjnych dla dowolnej platformy. Dzięki InstallAnywhere szybko dostosujesz się do zmian w branży, szybciej wejdziesz na rynek i zapewnisz angażującą obsługę klienta. I poznaj podatność komponentów OSS twojego projektu przed wysyłką.

- Witryna InstallAnywhere

InstallAnywhere to pakiet komercyjny / korporacyjny, który generuje instalatory programów opartych na Javie. Prawdopodobnie jest w stanie tworzyć pliki .exe.

Pliki wykonywalne JAR

Alternatywą dla plików .exe jest utworzenie pliku JAR, który uruchamia się automatycznie po dwukrotnym kliknięciu, dodając punkt wejścia do manifestu JAR .


Po więcej informacji

Doskonałym źródłem informacji na ten temat jest artykuł Excelsiora „ Konwersja Java na EXE - dlaczego, kiedy, kiedy nie i jak ”.

Zobacz także artykuł towarzyszący „ Najlepsze narzędzia do konwersji JAR na EXE, bezpłatne i komercyjne ”.

Sójka
źródło
Lepiej jest używać Eclipse i Jsmooth. Wykonaj następujące czynności regilanj.wordpress.com/2017/11/19/…
Maria Irudaya Regilan J
Czy któryś z tych elementów działałby w mojej sytuacji? stackoverflow.com/questions/56674075/…
gunslingor
Spróbuj tego: javaexe.free.fr/html/en/JavaExe.html
CamelTM
112

Uruchom4j

Launch4j to wieloplatformowe narzędzie do pakowania aplikacji Java dystrybuowanych jako słoiki w lekkich natywnych plikach wykonywalnych Windows. Plik wykonywalny można skonfigurować tak, aby wyszukiwał określoną wersję środowiska JRE lub używał wersji dołączonej, i można ustawić opcje środowiska wykonawczego, takie jak początkowa / maksymalna wielkość sterty. Opakowanie zapewnia również lepsze wrażenia użytkownika dzięki ikonie aplikacji, natywnemu ekranowi powitalnemu sprzed środowiska JRE, niestandardowej nazwie procesu i stronie pobierania Java w przypadku, gdy nie można znaleźć odpowiedniego środowiska JRE.

- Strona internetowa Launch4j

the.duckman
źródło
35

AKTUALIZACJA: GCJ nie żyje. Został oficjalnie usunięty z projektu GCC w 2016 r. Nawet wcześniej został praktycznie porzucony na siedem lat, aw każdym razie nigdy nie był wystarczająco kompletny, aby służyć jako realna alternatywna implementacja Java.

Znajdź inny kompilator Java AOT.

GCJ: Kompilator GNU dla Java może kompilować kod źródłowy Java na natywny kod maszynowy, w tym pliki wykonywalne systemu Windows.

Chociaż nie wszystko w Javie jest obsługiwane przez GCJ, szczególnie komponenty GUI (zobacz Jakie obsługiwane są Java API? Jak kompletne jest wsparcie? Pytanie z FAQ ). Nie korzystałem zbyt często z GCJ, ale po ograniczonych testach, które przeprowadziłem z aplikacjami konsolowymi, wydaje się to w porządku.

Wadą użycia GCJ do utworzenia samodzielnego pliku wykonywalnego jest to, że rozmiar wynikowego pliku EXE może być dość duży. Pewnego razu skompilowałem trywialną aplikację konsolową w GCJ, czego rezultatem był plik wykonywalny o wielkości około 1 MB. (Mogą to być sposoby, których nie jestem świadomy. Inną opcją byłyby wykonywalne programy kompresujące.)

Jeśli chodzi o instalatory typu open source, Nullsoft Scriptable Install System to instalator skryptowy. Jeśli jesteś ciekawy, istnieją przykłady podane przez użytkowników, w jaki sposób wykryć obecność środowiska JRE i zainstalować go automatycznie, jeśli wymagane środowisko JRE nie zostało zainstalowane. (Żeby Cię poinformować, wcześniej nie korzystałem z NSIS.)

Aby uzyskać więcej informacji na temat używania NSIS do instalowania aplikacji Java, zapoznaj się z moją odpowiedzią na pytanie „ Jaki jest najlepszy sposób dystrybucji aplikacji Java?

coobird
źródło
2
Projekt faktycznie nie żyje, jak widzę. Brak wiadomości na stronie głównej
Vladislav Rastrusny
Rozwój GNU Java został przeniesiony do OpenJDK, ponieważ źródła inne niż Oracle nie mogły uzyskać dostępu do TCK w celu weryfikacji.
Thorbjørn Ravn Andersen
25

Możesz utworzyć plik wsadowy z następującym kodem:

start javaw -jar JarFile.jar

i przekonwertować .bat na .exe za pomocą dowolnego konwertera .bat na .exe.

MultiplyByZer0
źródło
2
Dobre opakowanie przynosi środowisko JRE lub instaluje je w razie potrzeby i radzi sobie z błędami.
Thorbjørn Ravn Andersen
16

Używamy Install4J do budowania instalatorów dla środowisk Windows lub Unix.

Można go łatwo dostosować do momentu, w którym chcesz pisać skrypty dla specjalnych akcji, których nie można wykonać za pomocą standardowych okien dialogowych. Ale chociaż konfigurujemy z nim usługi Windows, używamy tylko standardowych składników.

  • instalator + program uruchamiający
  • Windows lub Unix
  • skryptowalny w Javie
  • zadanie mrówki
  • wiele konfigurowalnych standardowych paneli i działań
  • opcjonalnie zawiera lub pobiera środowisko JRE
  • może również uruchomić usługi Windows
  • wiele języków

Myślę, że Launch4J pochodzi z tej samej firmy (tylko program uruchamiający - bez instalatora).

PS: niestety nie otrzymuję zapłaty za to poparcie. Po prostu lubię to narzędzie.

Stroboskop
źródło
15

Najnowsza wersja Java Web Start została ulepszona, aby umożliwić dobrą pracę w trybie offline, a także umożliwić „instalację lokalną”. Warto przyjrzeć się.

EDIT 2018: Java Web Start nie jest już dołączany do najnowszych JDK. Zamiast tego Oracle dąży do „wdrożenia aplikacji lokalnie za pomocą dołączonego modelu JRE”.

Thorbjørn Ravn Andersen
źródło
Najwyraźniej JWS tak mocno zaostrzył zabezpieczenia, że ​​uruchomienie wymaga dużo więcej wysiłku niż wcześniej. Może się jednak okazać przydatny dla instalatorów.
Thorbjørn Ravn Andersen
9

Jeśli potrzebujesz przekonwertować całą aplikację na kod macierzysty, tj. Plik DLL plus DLL, istnieje ExcelsiorJET . Odkryłem, że działa dobrze i stanowi alternatywę dla pakietu JRE.

MDMA
źródło
Jednak naprawdę kosztowne.
Mordechai,
9

IMHO JSmooth wydaje się wykonywać całkiem niezłą robotę.

jussij
źródło
6

Powiedziałbym, że launch4j jest najlepszym narzędziem do konwersji kodu źródłowego Java (.java) do pliku .exe. Możesz nawet dołączyć do niego plik JRE do dystrybucji, a exe można nawet oznaczyć ikoną. Chociaż zwiększa się rozmiar aplikacji, zapewnia ona, że ​​aplikacja będzie działała idealnie, nawet jeśli użytkownik nie ma zainstalowanego jre. Zapewnia również, że możesz podać konkretny plik wymagany dla Twojej aplikacji bez konieczności osobnej instalacji przez użytkownika. Niestety java traci na znaczeniu. Obsługa wielu platform jest całkowicie ignorowana, a ostateczna aplikacja jest obsługiwana tylko w systemie Windows. Ale to nie jest wielka sprawa, jeśli obsługujesz tylko użytkowników systemu Windows.

Pratanu Mandal
źródło
5

Możesz użyć Janela . Ten ostatni działa jako program uruchamiający aplikacje lub program uruchamiający usługi (dostępny od 4.x).

L. BIZE
źródło
4

Alternatywnie możesz użyć translatora Java-C-C (np. JCGO ) i skompilować wygenerowane pliki C do natywnego pliku binarnego (.exe) dla platformy docelowej.

Iwan Majdanski
źródło
2
Jestem bardzo niewiarygodny skuteczności tej metody. Musiałbym to zobaczyć, aby w to uwierzyć (pomyśl o tym, że większość kodu Java to wywołania API do JRE, a wszystko to nie jest obecne w C, bez względu na różnice w działaniu języka).
Camilo Martin,
3

Mogę wybaczyć, że nie mam zamiaru konwertować programu Java do aplikacji .exe i mam swoje powody. Najważniejszym z nich jest to, że program Java może zostać skompilowany do pliku jar z wielu IDE. Gdy program ma format .jar, może działać na wielu platformach, w przeciwieństwie do .exe, który działałby tylko w bardzo ograniczonym środowisku. Jestem za ideą, że programy Java nie powinny być konwertowane na Exe, chyba że jest to bardzo konieczne. Zawsze można pisać pliki .bat, które uruchamiają program Java, gdy jest to plik jar.

jeśli naprawdę konieczne jest przekonwertowanie go na exe, konwerter Jar2Exe po cichu robi to i można również dołączyć biblioteki, które są kompilowane razem z aplikacją główną.

ErrorNotFoundException
źródło
Rzecz w tym, że moc Javy polega na przenośności, ale wiele osób potrzebuje tylko podstawowego exe systemu Windows. Osobiście uwielbiam koncepcję Java ... ale chciałbym rozpowszechniać coś, co moi użytkownicy mogliby uruchomić, bez konieczności pobierania środowiska JRE.
Balmipour,
2

Możesz przekonwertować jar do exe za pomocą jar2exe . Jednak musisz kupić oprogramowanie. Jeśli potrzebujesz oprogramowania typu open source, sugerowałbym JSmooth .

Raghunandan
źródło