Come posso convertire il mio programma Java in un file .exe? [chiuso]


500

Se ho un file sorgente Java (* .java) o un file di classe (* .class), come posso convertirlo in un file .exe?

Ho anche bisogno di un programma di installazione per il mio programma.


1
semplice hack per applet: scrivere un codice C con main e una chiamata per funzionare "system" come system ("appletviewer java_src_file");
Madhusoodan P

1
.Exe funzionerà nel sistema Windows senza JRE?
Arpit Agarwal,

Solo per essere completo (non l'ho provato io stesso perché avevamo bisogno di exe wrapper, non di installer): i pacchetti di installazione possono anche essere creati usando javapackager (vedi docs.oracle.com/javase/8/docs/technotes/guides/deploy/… ) . Per creare il programma di installazione EXE o MSI, è necessario scaricare e installare anche Inno Setup o WiX.
anre

Risposte:


324

javapackager

Lo strumento Java Packager compila, confeziona e prepara le applicazioni Java e JavaFX per la distribuzione. Il comando javapackager è la versione della riga di comando.

- Documentazione di Oracle

L' javapackagerutility viene fornita con JDK. Può generare file .exe con il -native exeflag, tra le altre cose.

WinRun4J

WinRun4j è un lanciatore Java per Windows. È un'alternativa a javaw.exe e offre i seguenti vantaggi:

  • Utilizza un file INI per specificare classpath, main class, vm args, program args.
  • Nome eseguibile personalizzato che appare in Gestione attività.
  • Argomenti JVM aggiuntivi per un utilizzo della memoria più flessibile.
  • Sostituitore di icone integrato per icona personalizzata.
  • [seguono altri punti elenco]

- Pagina Web di WinRun4J

WinRun4J è un'utilità open source. Ha molte caratteristiche.

packr

Confeziona JAR, risorse e JVM per la distribuzione su Windows, Linux e Mac OS X, aggiungendo un file eseguibile nativo per farlo apparire come un'app nativa. Packr è più adatto per le applicazioni GUI.

- packr README

packr è un altro strumento open source.

JSmooth

JSmooth è un wrapper eseguibile Java. Crea launcher nativi per Windows (.exe standard) per le tue applicazioni java. Rende la distribuzione Java molto più semplice e intuitiva, in quanto è in grado di trovare da sola qualsiasi VM Java installata.

- Sito Web di JSmooth

JSmooth è open source e ha funzionalità, ma è molto vecchio. L'ultima versione è stata nel 2007.

JexePack

JexePack è uno strumento da riga di comando (ottimo per gli script automatici) che consente di impacchettare l'applicazione Java (file di classe), opzionalmente insieme alle sue risorse (come GIF / JPG / TXT / ecc.), In un unico Windows EXE a 32 bit compresso , che viene eseguito utilizzando Java Runtime Environment di Sun. Sono supportate sia applicazioni console che finestre.

- Sito Web di JexePack

JexePack è trialware. Il pagamento è necessario per l'uso in produzione e i file exe creati con questo strumento visualizzeranno "promemoria" senza pagamento. Inoltre, l'ultima versione è stata nel 2013.

InstallAnywhere

InstallAnywhere consente agli sviluppatori di creare facilmente software di installazione professionale per qualsiasi piattaforma. Con InstallAnywhere ti adatterai rapidamente ai cambiamenti del settore, raggiungerai il mercato più velocemente e fornirai un'esperienza coinvolgente per il cliente. E conoscere la vulnerabilità dei componenti OSS del progetto prima della spedizione.

- Sito Web di InstallAnywhere

InstallAnywhere è un pacchetto commerciale / aziendale che genera programmi di installazione per programmi basati su Java. Probabilmente è in grado di creare file .exe.

File JAR eseguibili

In alternativa ai file .exe, è possibile creare un file JAR che viene eseguito automaticamente quando si fa doppio clic, aggiungendo un punto di ingresso al manifest JAR .


Per maggiori informazioni

Un'eccellente fonte di informazioni su questo argomento è l'articolo di Excelsior " Converti Java in EXE: perché, quando, quando e come ".

Vedi anche l'articolo associato "I migliori strumenti di conversione da JAR a EXE, gratuiti e commerciali ".


È meglio usare eclipse e Jsmooth. Segui questi passaggi regilanj.wordpress.com/2017/11/19/…
Maria Irudaya Regilan J

Qualcuno di questi avrebbe funzionato per la mia situazione? stackoverflow.com/questions/56674075/…
gunslingor


112

Launch4J

Launch4j è uno strumento multipiattaforma per il wrapping di applicazioni Java distribuite come vasetti in eseguibili nativi Windows leggeri. L'eseguibile può essere configurato per cercare una determinata versione di JRE o utilizzarne una in bundle ed è possibile impostare opzioni di runtime, come la dimensione heap iniziale / massima. Il wrapper offre inoltre una migliore esperienza utente tramite un'icona dell'applicazione, una schermata iniziale pre-JRE nativa, un nome di processo personalizzato e una pagina di download Java nel caso in cui non sia possibile trovare il JRE appropriato.

- Sito Web di Launch4j


35

AGGIORNAMENTO: GCJ è morto. È stato ufficialmente rimosso dal progetto GCC nel 2016. Ancora prima, è stato praticamente abbandonato per sette anni, e in ogni caso non è mai stato sufficientemente completo per servire come un'implementazione alternativa alternativa valida.

Vai a trovare un altro compilatore AOT Java.

GCJ: Il compilatore GNU per Java può compilare il codice sorgente Java in codice macchina nativo, inclusi gli eseguibili di Windows.

Sebbene non tutto in Java sia supportato sotto GCJ, in particolare i componenti della GUI (vedere Quali API Java sono supportate? Quanto è completa la domanda di supporto? Dalle FAQ ). Non ho usato GCJ molto, ma dai test limitati che ho fatto con le applicazioni console, sembra che vada bene.

Un aspetto negativo dell'utilizzo di GCJ per creare un eseguibile autonomo è che la dimensione del file EXE risultante può essere piuttosto grande. Una volta ho compilato una banale applicazione console in GCJ e il risultato è stato un eseguibile di circa 1 MB. (Potrebbero esserci modi per aggirare questo problema di cui non sono a conoscenza. Un'altra opzione potrebbe essere un programma di compressione eseguibile.)

In termini di programmi di installazione open source, il sistema di installazione tramite script Nullsoft è un programma di installazione tramite script. Se sei curioso, ci sono esempi forniti dagli utenti su come rilevare la presenza di un JRE e installarlo automaticamente se il JRE richiesto non è installato. (Solo per farvi sapere, non ho mai usato NSIS prima.)

Per ulteriori informazioni sull'uso di NSIS per l'installazione di applicazioni Java, dai un'occhiata alla mia risposta alla domanda " Qual è il modo migliore per distribuire le applicazioni Java? "


2
Il progetto in realtà è morto, come posso vedere. Nessuna notizia sulla pagina principale
Vladislav Rastrusny,

Lo sviluppo di GNU Java si è praticamente spostato su OpenJDK, poiché i sorgenti non Oracle non potevano accedere al TCK per la convalida.
Thorbjørn Ravn Andersen,

25

È possibile creare un file batch con il seguente codice:

start javaw -jar JarFile.jar

e converti il ​​.bat in un .exe usando qualsiasi convertitore .bat in .exe.


2
Un buon wrapper porta un JRE o lo installa se necessario e gestisce le situazioni di errore.
Thorbjørn Ravn Andersen,

16

Stiamo usando Install4J per creare programmi di installazione per Windows o ambienti Unix.

È facilmente personalizzabile fino al punto in cui si desidera scrivere script per azioni speciali che non possono essere eseguite con dialoghi standard. Ma anche se stiamo configurando servizi Windows con esso, stiamo usando solo componenti standard.

  • installer + launcher
  • windows o unix
  • programmabile in Java
  • compito di formica
  • molti pannelli e azioni standard personalizzabili
  • facoltativamente include o scarica un JRE
  • può anche avviare i servizi di Windows
  • più lingue

Penso che Launch4J provenga dalla stessa azienda (solo il lanciatore - nessun programma di installazione).

PS: purtroppo non mi pagano per questa approvazione. Mi piace solo quello strumento.


15

L'ultimo Java Web Start è stato migliorato per consentire un buon funzionamento offline e per consentire "l'installazione locale". Vale la pena esaminarlo.

EDIT 2018: Java Web Start non è più in bundle con i più recenti JDK. Oracle sta invece spingendo verso un modello "distribuisci la tua app localmente con un JRE incluso".


A quanto pare JWS ha avuto un rafforzamento della sicurezza così tanto, che richiede molto più sforzo di prima per iniziare a funzionare. Potrebbe comunque essere utile per gli installatori.
Thorbjørn Ravn Andersen,

9

Se è necessario convertire l'intera applicazione in codice nativo, ovvero un EXE più DLL, c'è ExcelsiorJET . Ho scoperto che funziona bene e ho fornito un'alternativa al raggruppamento di un JRE.


Davvero costoso, però.
Mordechai,


6

Direi che launch4j è lo strumento migliore per convertire un codice sorgente java (.java) in un file .exe Puoi persino raggruppare un jre con esso per la distribuzione e l'exe può persino essere iconificato. Sebbene le dimensioni dell'applicazione aumentino, si assicura che l'applicazione funzionerà perfettamente anche se l'utente non ha un jre installato. Inoltre, ti consente di fornire il jre specifico richiesto per la tua app senza che l'utente debba installarla separatamente. Ma sfortunatamente, Java perde la sua importanza. Il suo supporto multipiattaforma viene totalmente ignorato e l'app finale è supportata solo per Windows. Ma questo non è un grosso problema, se fai catering solo per gli utenti di Windows.


5

Puoi usare Janel . Quest'ultimo funziona come un lanciatore di applicazioni o un lanciatore di servizi (disponibile da 4.x).


4

In alternativa, è possibile utilizzare un traduttore java-to-c (ad esempio, JCGO ) e compilare i file C generati in un file binario nativo (.exe) per la piattaforma di destinazione.


2
Sono molto incredulo dell'efficacia di questo metodo. Dovrei vederlo per crederci (pensa al fatto che la maggior parte del codice Java sono chiamate API al JRE, e tutto ciò non è presente su C, non importa mai le differenze nel modo in cui funziona il linguaggio).
Camilo Martin,

3

Posso essere perdonato per essere contrario alla conversione di un programma Java in un'applicazione .exe e ho i miei motivi. il principale è che un programma java può essere compilato in un file jar da molti IDE. Quando il programma è in formato .jar, può essere eseguito su più piattaforme invece di .exe che verrebbe eseguito solo in un ambiente molto limitato. Sono dell'idea che i programmi Java non debbano essere convertiti in Exe a meno che non sia molto necessario. Si può sempre scrivere file .bat che eseguono il programma Java mentre è un file jar.

se è davvero necessario convertirlo in exe, il convertitore Jar2Exe lo fa in silenzio e si possono anche collegare librerie compilate insieme all'applicazione principale.


Il fatto è che il potere di Java è la portabilità, ma molte persone hanno solo bisogno di un Windows exe di base. Personalmente, adoro il concetto di Java ... ma vorrei distribuire qualcosa che i miei utenti potrebbero eseguire, senza dover scaricare un JRE.
Balmipour,

2

Puoi convertire jar in exe usando jar2exe . Tuttavia è necessario acquistare il software. Se hai bisogno di un software open source, suggerirei JSmooth .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.