2013-05-29 6 views
8

Also habe ich eine Drittanbieterbibliothek, die eine .jar-Datei ist. Es gibt einige Klassen in diesem Jar. Das Problem ist, dass es in dieser Klasse einen Fehler in dieser .jar gibt. Ich weiß es, weil ich die JAR-Datei dekompilieren kann, um den Java-Code zu betrachten, was ich ziemlich sicher bin, dass die Klasse die Quelle meines Programmfehlers ist.So entfernen Sie die Klassendatei in der .jar-Datei und ändern sie mit meiner eigenen Implementierung

Die Idee ist, ich lösche die Klasse und ersetze sie durch meine eigene Klasse, aber ich weiß nicht wie.

+0

Können Sie diese Klasse nicht erweitern und ihre fehlerhafte Methode überschreiben, wenn sie öffentlich ist, oder eine Adapterklasse basierend auf dieser Klasse erstellen? – NINCOMPOOP

+0

@TheNewIdiot kann ich leider nicht. Da die andere Klasse stark von dieser Klasse abhängig ist. –

Antwort

1
  1. Klasse erweitern umzuschreiben Methode Fehler

  2. Verwenden JDEC Entfernen Klasse zu dekompilieren und ersetzen (http://jdec.sourceforge.net/)

+0

1. Wird nicht funktionieren, wenn die Methode privat ist. – SMKS

7

Es gibt mehrere Möglichkeiten, dies zu tun:

  1. Versuchen Sie Winrar zu verwenden. Sie können Ihr jar darin öffnen und das Verzeichnis mit der Klassendatei erkunden. Sie können Klassendateien löschen und hinzufügen.

  2. Wenn Sie das Glas nicht verwenden möchten, dann tun, wie folgt:

Extrahieren Sie das Gefäß mit diesem Befehl

jar -xvf yourjar.jar

Es wird das Glas explodieren. Löschen Sie die alte Klassendatei und fügen Sie Ihre aktualisierte Klassendatei

das Glas neu erstellen Sie den folgenden Befehl

Glas mit -cvf yourjar.jar directoryofexploderjar/

+0

ein weiterer Ansatz mit Winzip/winrar öffnen Sie Ihr Glas, gehen Sie zum Klassenstandort und nur Drag & Drop aktualisierten Klasse, schließen WinRAR/Winzip und müssen nicht jar zu explodieren und dann jar ... –

+0

** jar uf <><< Eingabedatei (en) >> ** –

0

Ihre eigene Klasse im selben Paket schreiben Stellen Sie als Original sicher, dass Ihre Klassen vor dem 3rd-Party-Jar des Java-Klassenpfads stehen. Auf diese Weise überschreiben Sie die ursprüngliche Version, der Klassenlader lädt Ihre Klasse.

Verwandte Themen