Převod souboru JAR do JAVA
Extrahujte vložený zdrojový kód nebo dekompilujte třídy JAR do použitelných zdrojových souborů Java.
Převádějte soubory JAR online
Pro převod JAR do JAVA zatím vlastní online konvertor nemáme, ale soubory JAR můžete online převést do těchto formátů:
Jak převést soubor jar do formátu java
- Programování
- Dosud nehodnoceno.
Zdrojové soubory jsou potřebné v případě, že JAR je jedinou dostupnou kopií Java knihovny nebo aplikace a její kód je nutné prozkoumat, auditovat, upravit nebo znovu sestavit. Většina release JARů obsahuje zkompilované soubory .class, takže obnovení souborů .java obvykle vyžaduje dekompilaci, nikoli přímý převod souborů.
Co obsahuje soubor JAR
JAR (Java Archive) je archiv založený na formátu ZIP, který Java vývojáři, build tools a dodavatelé aplikací používají k distribuci knihoven, pluginů a aplikací. Běžně obsahuje zkompilované třídy, zdroje, metadata závislostí a META-INF/MANIFEST.MF; spustitelné JARy mohou v tomto manifestu deklarovat startup class.
JDK tools, Maven, Gradle, Eclipse a IntelliJ IDEA mohou vytvářet nebo používat JARy. Samostatný archiv s názvem name-sources.jar často obsahuje původní zdrojové soubory a měl by být použit namísto dekompilace zkompilovaného JARu.
Co je soubor JAVA
Neexistuje samostatný binární formát „JAVA“. Soubor .java je prostý text obsahující Java source code s třídami, rozhraními, metodami, deklaracemi package a importy. Lze jej upravovat a kompilovat pomocí javac, pokud jsou k dispozici požadované knihovny a příslušná Java release level.
Jeden JAR obvykle vytvoří mnoho zdrojových souborů. Jejich složky by měly odpovídat názvům package: com.example.Main patří do com/example/Main.java. Java vyžaduje, aby public top-level class používala stejný název souboru jako tato třída.
Nejprve extrahujte existující zdrojový kód
Vypište obsah archivu pomocí JDK příkazu jar:
jar tf app.jar
Pokud výpis obsahuje soubory .java, extrahujte je do prázdného pracovního adresáře:
mkdir recovered-srccd recovered-srcjar xf ../app.jar
Pokud je k dispozici odpovídající source archive, extrahujte místo něj tento archiv:
jar xf app-sources.jar
Nezaměňujte zdroje, jako jsou .properties, XML files, images nebo service definitions, za Java source. Pokud je projekt potřebuje, extrahujte je, nelze je však převést na smysluplný kód .java.
Dekompilace zkompilovaných tříd
Pokud JAR obsahuje pouze soubory .class, použijte desktopový Java decompiler. CFR je vhodná command-line možnost a obecně si s novějším Java bytecode poradí lépe než mnoho starších decompilerů. Stáhněte CFR z jeho oficiálního project site a poté spusťte:
java -jar cfr.jar app.jar --outputdir recovered-src
CFR zapíše obnovené soubory .java do složky recovered-src. Jako graphical option otevřete JAR v JD-GUI a vyberte File → Save All Sources; JD-GUI vytvoří ZIP archive, který je nutné před otevřením souborů v IDE extrahovat.
IntelliJ IDEA dokáže pro účely kontroly zobrazit dekompilované třídy, ale pokud je vyžadován exportovatelný source tree, jsou vhodnější CFR nebo JD-GUI. U malých, veřejných a necitlivých samples lze JARy dekompilovat bez lokální instalace pomocí browser services, jako je Decompiler.com; před odesláním čehokoli si ověřte jeho podmínky uchovávání a ochrany soukromí.
Omezení kompilace a obnovení
Dekompilovaný výstup není původní source project. Bytecode nezachovává komentáře, formátování, většinu názvů lokálních proměnných, test sources, build scripts, historii version control a některé informace o generických typech. Obfuscation může smysluplné názvy nahradit identifikátory, jako jsou a a b.
Obnovené soubory se nemusí okamžitě zkompilovat. Přidejte původní dependencies JARu, generated code, annotation processors, resources a compiler options; poté kompilujte pro Java release použitou původními třídami. Novější class-file version může vyžadovat novější JDK a decompiler, který tuto verzi podporuje.
Multi-release JARy mohou obsahovat alternativní implementace tříd ve složce META-INF/versions/ a shaded JARy mohou vedle kódu aplikace obsahovat také dependencies. Než začnete každou obnovenou třídu považovat za součást jednoho source projectu, zkontrolujte strukturu package a manifest.
Soukromé, zákaznické, licencované nebo bezpečnostně citlivé JARy ponechte na lokálním počítači místo jejich odesílání do online decompileru. Dekompilujte pouze software, který vlastníte nebo k jehož kontrole máte oprávnění; na obnovený kód se nadále vztahují původní licenční a autorská práva.
Stručně řečeno, nelze přímo jednoduchým způsobem zkonvertovat soubor JAR do JAVA souboru.
Proto pravděpodobně nenaleznete konverzní utilitu nebo zdarma online stránky/službu, která umí převést soubory .jar na .java. Určitě lze nalézt webovou službu, která tuto konverzi slibuje online a zadarmo, ale pravděpodobně je to podvodná stránka slibující něco, co jednoduše nelze.
JAR vs JAVA: srovnání formátů
Jak si formáty JAR a JAVA stojí v nejdůležitějších vlastnostech pro tento převod.
| Vlastnost | .JAR Java Archive | .JAVA Java source code file |
|---|---|---|
| Otevřený standard | Ano | Částečně otevřený |
| Komprese | Obojí | Bez komprese |
| Typická velikost souboru | Střední | Malé |
| Otevírá se ve webovém prohlížeči | Ne | Ne |
| Další úpravy | Omezeně | Snadné |
| Podpora metadat | Základní | Základní |
| Čitelný jako prostý text | Ne | Ano |
| Nejvhodnější pro | Vkládání do aplikací | Profesionální produkce |
| Zavedeno | 1996 | 1995 |
| Vývojář | Oracle (originally Sun Microsystems) | Oracle (Java platform; originally Sun Microsystems) |
| MIME typ | application/java-archive | text/x-java-source |