Come faccio a raggruppare un JRE in un file EXE per un’applicazione Java? Launch4j dice “il runtime è mancante o danneggiato.”

Sono nuovo di programmazione in Java, ma sono generalmente familiarità con il modo in cui tutto funziona. Mi piacerebbe essere in grado di mettere sia un file jar che un jre in un file eseguibile di Windows (exe) in modo che quando lo distribuisco, il client non abbia bisogno di avere un JRE installato. Quale programma dovrei usare?

Ho launch4j e sembra fare esattamente quello che voglio, ma quando provo a eseguire l’app, ottengo “Questa applicazione è stata configurata per utilizzare un Java Runtime Environment in bundle ma il runtime è mancante o danneggiato.”

Voglio che la mia app sia solo un exe eseguibile, non un programma di installazione. Come minimo qualcuno può mostrarmi come raggruppare correttamente un JRE con launch4j?

L’unico modo per raggruppare un JRE era usare Launch4J e Inno Setup Compiler .

Innanzitutto, creare una cartella jre6 (ad esempio) nella stessa directory del file di output (.exe).

Quindi copia il JRE dal tuo sistema nella tua cartella jre6 .

Quindi apri Launch4J e imposta il percorso JRE in bundle – digita jre6 . Quindi fai clic sul pulsante Crea (ovviamente, dopo aver inserito tutti gli altri parametri), ma l’unico valore che devi inserire nella scheda JRE è il valore del percorso JRE in bundle .)

Mi sarei aspettato che funzionasse, ma se poi si sposta l’exe in una nuova posizione (quindi non è più collocato nella cartella jre6 ) si ottiene che questa applicazione è stata configurata per utilizzare un Java Runtime Environment in bundle ma il runtime è mancante o errore corrotto quando si tenta di eseguire l’applicazione …

Ho giocato con questo tutto il giorno e non ho avuto modo di ottenere Launch4J per includere JRE nel file .exe. Davvero povero secondo me, poiché la loro documentazione non sembra alludere a questo problema.

Quindi quello che ho fatto per risolvere è stato utilizzare Inno Setup Compiler (ISC) . Questa app viene utilizzata per avvolgere il tuo exe come file di Windows Installer. Così ho aggiunto un’impostazione allo script ISC che copia JRE nel pacchetto di installazione. La riga che ho aggiunto allo script (nella sezione [Files] ) era:

 Source: "M:\Netbeans\MyApp\jre6\*"; DestDir: "{app}\jre6\"; Flags: recursesubdirs createallsubdirs 

… un po ‘di soluzione, ma ha funzionato.

Ripeti tutti i passaggi precedenti e dovresti essere ordinato.

Non ho mai usato il prodotto Launch4J, buona fortuna per averlo configurato correttamente.

Sembra che potresti essere in grado di andare al Forum di discussione su Sourceforge per altri suggerimenti qui

Altri suggerimenti:

La maggior parte dei prodotti che ho visto da IBM (Websphere) e Oracle estraggono un JRE sotto la directory di installazione e configurano il comando batch di avvio per utilizzare JRE installato. In sostanza, il JRE e il file jar verranno installati in un’unica operazione.

L’installazione exe controlla di solito se è già installata e ignora tale passaggio se lo trova già lì. Questo è utile per gli aggiornamenti del solo file jar.

Avere l’installazione locale risolve anche il problema del cliente che installa il proprio JRE che potrebbe essere incompatibile o contenere bug. In questo modo hai a che fare con una versione JRE conosciuta.

Il percorso excelsior è OK se non si dispone di un componente grafico per l’applicazione (è stato un po ‘di tempo, tale restrizione potrebbe essere cambiata). Ci sono anche altre restrizioni, ma probabilmente è meglio solo distribuire un JRE con il tuo codice in un unico programma di installazione eseguibile.

Sembra che tu abbia bisogno del compilatore di codice nativo. Questi compilatori producono codice nativo che non richiede JRE.

Controlla questo articolo – https://www.excelsior-usa.com/articles/java-to-exe.html#aot .

È facile raggruppare jre in launch4j ..

copia il jre nella stessa cartella di output

Nella casella di testo dell’ambiente jre bundle, basta dare la stessa cartella jre

Nella casella di testo della variabile d’ambiente (presente nella stessa pagina sotto), dare fino a bin

Quindi creare exe .. Funziona come previsto senza jre in macchina.

Grazie

Quello che stai chiedendo non sarà facile da fare (se è fattibile affatto). Se fossi in te, guarderei nella creazione di un file JAR eseguibile:

java eclipse crea un jar eseguibile

Un’altra opzione potrebbe essere l’utilizzo di Java Web Start. Questo presupponeva che tu stia usando un browser moderno, il JNLP chiederà automaticamente all’utente di installare la versione corretta di Java.

http://docs.oracle.com/javase/tutorial/deployment/webstart/index.html

Ci sono diversi motivi per cui launch4j non funzionerà correttamente. alcuni dei motivi sono:

1) l’utente non esegue l’applicazione come amministratore

2) L’utente non imposta correttamente l’immagine dell’icona. deve rigorosamente .ico