.class file source ändern



  • Servus!

    Ganz kurz und direkt: Kann ich eine .class File, die zu einem .jar-Archiv gehört und jede Menge dependencies hat, tatsächlich ändern und meine geänderte Version in das .jar-Archiv zurück legen?

    Es gibt jede Menge decompiler. Mit diesen bekomme ich wohl in etwa den orginalen Source-Code zurück.
    Allerdings kann man hier nichts ändern.

    Dann gibt es auch sowas wie ClassEditor. In diesem kann ich allerdings nicht auf den Source-Code zugreifen und diesen ändern (ich muss ein try {} catch() Block hinzufügen), sondern nur sowas wie Konstanten.

    Gibt es eine effiziente Möglichkeit das zu tun, was ich tun will?

    Wenn ich mir jetzt die Mühe mache und versuche, den decompilten Code in eine IDE zu bringen und alle dependencies zu resolven ... sollte das funktionieren?

    Wie würdet Ihr bei sowas vorgehen?



  • mercious schrieb:

    Ganz kurz und direkt: Kann ich eine .class File, die zu einem .jar-Archiv gehört und jede Menge dependencies hat, tatsächlich ändern und meine geänderte Version in das .jar-Archiv zurück legen?

    Klar kann man. .jar-Archive sind nichts anderes als .zip-Files.

    Es gibt jede Menge decompiler. Mit diesen bekomme ich wohl in etwa den orginalen Source-Code zurück.
    Allerdings kann man hier nichts ändern.

    Wieso kann man nichts ändern? .class-Datei durch den Decompiler jagen, das was dabei rauskommt mit einem Editor der Wahl ändern und dann wieder kompilieren. Alles kein Hexenwerk. Classpath muss natürlich passend gesetzt sein.



  • Alles klar, soweit war das mein Plan.

    Ich weiß nur ehrlich gesagt nicht, wie Decompiler am Ende genau funktionieren (irgendeine Schnitstelle bevor der source-code von der JVM compiled wird, soetwas ind er Art).

    Daher war ich mir nicht sicher, ob ich überhaupt erwarten kann, dass etwas mit so-vielen dependencies am Ende irgendwie wieder sinnvoll compiled werden kann.

    Am Ende wahrscheinlich alles andere als eine schöne Lösung, aber was will man machen.

    Ich danke dir 🙂


Log in to reply