Dlaczego konwertować CLASS na JAVA?
Plik .class przechowuje skompilowany kod bajtowy, a nie kod źródłowy. Dekompilacja jest przydatna, gdy oryginalne pliki .java zostaną utracone lub są niedostępne, do audytu kodu stron trzecich lub do zrozumienia działania skompilowanej klasy. Dekompilator stosuje inżynierię wsteczną, aby uzyskać przybliżenie oryginalnego źródła Java.
Jak przekonwertować CLASS na JAVA
JD-GUI OPEN-SOURCE
Przeciągnij plik .class do okna JD-GUI, a zrekonstruowane źródło pojawi się natychmiast. Użyj Plik > Zapisz wszystkie źródła, aby wyeksportować pliki .java.
CFR OPEN-SOURCE
Uruchom java -jar cfr.jar MyClass.class --outputdir ./out, a zdekompilowany plik .java pojawi się w folderze wyjściowym.
IntelliJ IDEA Community FREE
Otwórz lub przeciągnij plik .class do edytora; IntelliJ automatycznie zdekompiluje go za pomocą wbudowanego silnika Fernflower i wyświetli kod źródłowy.
O tych formatach
Plik CLASS to skompilowany kod bajtowy Java - wynik działania polecenia javac na pliku źródłowym .java. Aby go uruchomić, musisz mieć zainstalowane środowisko Java (JDK), a następnie użyć…
Otwórz szczegóły .CLASS →Plik JAVA to czytelny dla człowieka kod źródłowy napisany w języku programowania Java. Można go otworzyć w dowolnym edytorze tekstu lub środowisku IDE Java, takim jak IntelliJ IDEA lub VS…
Otwórz szczegóły .JAVA →Jakość i na co uważać
- Komentarze w oryginalnym źródle są usuwane przez kompilator i nie można ich odzyskać z kodu bajtowego.
- Oryginalne nazwy zmiennych lokalnych są zazwyczaj zastępowane nazwami takimi jak
var1,var2, chyba że klasa została skompilowana z informacjami debugowania (javac -g). - Zaciemnione klasy (przetworzone za pomocą ProGuard lub R8) dekompilują się do ledwo czytelnego kodu - dekompilator działa, ale wynik odzwierciedla zaciemnione nazwy.
Najczęściej zadawane pytania
Czy zdekompilowany kod źródłowy Java nadaje się do ponownej kompilacji?
Skąd mam wiedzieć, która wersja Java skompilowała klasę?
.class wskazuje na wydanie Java - na przykład 52 = Java 8, 61 = Java 17, 65 = Java 21.Co jeśli potrzebuję tylko sprawdzić kod bajtowy, a nie odzyskać źródło Java?
javap -c -p MyClass (dołączony do JDK) deasembluje kod bajtowy do mnemoników bez konieczności pobierania dodatkowych narzędzi.