Waarom CLASS naar EXE converteren?
JVM-bytecode is een platformonafhankelijke instructieset die tijdens runtime wordt geïnterpreteerd door de Java Virtual Machine. Een Windows .exe bevat systeemeigen x86/x64-machinecode die rechtstreeks door de CPU wordt uitgevoerd. Dit zijn fundamenteel verschillende formaten zonder gedeelde instructieset, waardoor mechanische vertaling naar een systeemeigen uitvoerbaar bestand onmogelijk is.
Hoe CLASS naar EXE te converteren
jpackage (JDK 14+) FREE
Bundel eerst je .class-bestanden in een JAR met jar cfe app.jar MainClass *.class, en voer daarna jpackage --input . --main-jar app.jar --name MyApp --type exe uit om een Windows-installatieprogramma te maken dat een eigen JRE bevat.
Launch4j FREE
Bundel je klassen eerst in een JAR en gebruik vervolgens Launch4j om de JAR te verpakken in een lichtgewicht .exe-stub die tijdens runtime een geïnstalleerde JRE zoekt.
Over deze formaten
Een CLASS-bestand is gecompileerde Java-bytecode - de uitvoer die javac produceert van een .java-bronbestand. Om het uit te voeren heb je Java (een JDK) geïnstalleerd nodig, gebruik daarna…
Open .CLASS details →Een EXE-bestand is een uitvoerbaar programma voor Windows. Dubbelklik op Windows op het bestand om het uit te voeren. Gebruik op Mac of Linux CrossOver of Wine - EXE-bestanden draaien niet…
Open .EXE details →Kwaliteit & waar op te letten
- Bij elke praktische aanpak draait Java nog steeds op de achtergrond -
jpackagebundelt een eigen JRE, Launch4j vereist dat er een is geïnstalleerd; de JVM is niet optioneel voor Java-bytecode. - Sites die beweren willekeurige
.class-bestanden te converteren naar een echt onafhankelijk.exe-bestand zijn misleidend; een dergelijke tool bestaat niet. - Om de broncode van een
.classte inspecteren of te herstellen, gebruik je JD-GUI of CFR om terug te decompileren naar.java.
Veelgestelde vragen
Kan ik een .class-bestand hernoemen naar .exe en het uitvoeren?
.class begint met de magic bytes van Java CA FE BA BE, en niet met een geldige PE-header.Wat produceert jpackage eigenlijk?
Kan ik een enkel .class-bestand verpakken zonder een volledig project?
public static void main ingangspunt heeft; bibliotheekklassen en fragmenten moeten eerst met alle afhankelijkheden in een JAR worden gebundeld.