2013-05-29 29 views
8

Mam więc bibliotekę innej firmy, która jest plikiem .jar. W tym słoiku jest kilka klas. Problem polega na tym, że w jednej klasie występuje jeden błąd .jar. Wiem o tym, ponieważ mogę dekompilować plik JAR, aby przyjrzeć się kodowi java, co jest prawie pewnym, że klasa jest źródłem mojego błędu programowego.Jak usunąć plik klasy w pliku .jar i zmienić go za pomocą mojej własnej implementacji

Chodzi o to, że usunę klasę i zastąpię ją własną klasą, ale nie wiem jak.

+0

Nie można rozszerzyć tej klasy i zastąpić jej wadliwą metodę, jeśli jest ona publiczna lub utworzyć klasę adapterów na podstawie tej klasy? – NINCOMPOOP

+0

@TheNewIdiot niestety, nie mogę. Ponieważ druga klasa ma dużą zależność od tej klasy. –

Odpowiedz

1
  1. Extend klasę i przepisać metodę usuwania bug

  2. Używaj JDEC dekompilować i zastąpić klasę (http://jdec.sourceforge.net/)

+0

1. Nie zadziała, jeśli metoda jest prywatna. – SMKS

7

Istnieje wiele sposobów, aby to zrobić:

  1. Spróbuj użyć WinRAR. Możesz otworzyć w nim swój jar, przejrzeć katalog zawierający plik klasy. Możesz usuwać i dodawać pliki klas.

  2. Jeśli nie chcesz korzystać z słoik zrób tak:

Extract słoik przy użyciu tego polecenia

jar -xvf yourjar.jar

To eksploduje słoik. Usunąć stary plik klasy i dodać zaktualizowany plik klasy

Odtworzenie słoik za pomocą następującego polecenia

słoik -cvf yourjar.jar directoryofexploderjar/

+0

jeszcze jedno podejście przy użyciu winzip/winrar otwórz swój jar, przejdź do lokalizacji klasy i po prostu przeciągnij i upuść zaktualizowaną klasę, zamknij winrar/winzip i nie musisz wysuwać jar, a następnie recrete jar ... –

+0

** jar uf <><< plik-wejściowy >> –

0

Napisz własną klasę w tym samym opakowaniu jako oryginalną, upewnij się, że twoje klasy są przed słojem trzeciej strony w ścieżce klasy Java. W ten sposób zastąpisz oryginalną wersję, program ładujący klasy załaduje twoją klasę.