Perché convertire CLASS in EXE?
Il bytecode JVM è un set di istruzioni indipendente dalla piattaforma interpretato a runtime dalla Java Virtual Machine. Un .exe di Windows contiene codice macchina nativo x86/x64 eseguito direttamente dalla CPU. Si tratta di formati fondamentalmente diversi senza un set di istruzioni condiviso, il che rende impossibile la traduzione meccanica in un eseguibile nativo.
Come convertire CLASS in EXE
jpackage (JDK 14+) FREE
Per prima cosa raggruppa i tuoi file .class in un JAR con jar cfe app.jar MainClass *.class, quindi esegui jpackage --input . --main-jar app.jar --name MyApp --type exe per creare un programma di installazione Windows che include un JRE privato.
Launch4j FREE
Raggruppa prima le tue classi in un JAR, quindi usa Launch4j per avvolgere il JAR in uno stub .exe leggero che individua un JRE installato al momento dell'esecuzione.
Informazioni su questi formati
Un file CLASS è bytecode Java compilato - l'output prodotto da javac a partire da un file sorgente .java. Per eseguirlo è necessario avere Java (un JDK) installato, quindi usare il comando…
Apri dettagli .CLASS →Un file EXE è un programma eseguibile di Windows. Su Windows, fai doppio clic per avviarlo. Su Mac o Linux, usa CrossOver o Wine - gli EXE non girano nativamente fuori da Windows. L'EXE è…
Apri dettagli .EXE →Qualità e a cosa prestare attenzione
- In ogni approccio pratico Java continua a girare sotto traccia -
jpackageinclude un JRE privato, Launch4j ne richiede uno installato; la JVM non è opzionale per il bytecode Java. - I siti che dichiarano di convertire file
.classarbitrari in un autentico.exeautonomo sono fuorvianti; non esiste alcuno strumento del genere. - Per ispezionare o recuperare il codice sorgente da un
.class, usa JD-GUI o CFR per decompilarlo nuovamente in.java.
Domande frequenti
Posso rinominare un file .class in .exe ed eseguirlo?
.class inizia con i magic bytes di Java CA FE BA BE, non con un header PE valido.Cosa produce effettivamente jpackage?
Posso racchiudere un singolo file .class senza un intero progetto?
public static void main; le classi di libreria e i frammenti devono prima avere tutte le dipendenze raggruppate in un JAR.