Wczytanie i edycja pliku .jar

0

Hey, napotkałem pewien problem. Otóż posiadam plik .jar i czy istnieje możliwość aby go wczytać bądź w jakiś sposób otworzyć by można było zawartość aplikacji zedytować? Nie mam dostępu do aktualnej wersji kodu, bo zmiany po wygenerowaniu .jara nie zostały zapisane a żeby na nowo nie wymyślać koła potrzebuje mieć aktualna wersję aplikacji.

2

Tyle że w jarze to zazwyczaj sa pliki .class a nie java (by default), więc trochę z tym edytowanien "zawartości aplikacji" może być ciężko ;]
A jar to generalnie to zwykłe archivum zip, więc można rozpakowywać, pakować etc.

0

W runtime mógłbyś się jedynie jakoś refleksją do tego spróbować dobrać i wprowadzić modyfikację do uruchomionego kodu. Raczej nie będziesz mógł edytować skompilowanego bajtkodu. Możesz dodać plik jar jako zależność do nowego, pustego projektu w katalogu libs/ i potem w IntelliJu zdekompilować ten kod, skopiować go ręcznie do nowych plików, zapisać jako nowy projekt, wprowadzić modyfikację i skompilować ponownie jako nową jarkę. Niemniej jednak, po dekompilacji, kod może być nieczytelny i trudny w modyfikacji, możliwe, że nie skompiluje się "od strzała" i będziesz potrzebował dodać jakieś zależności (pół biedy jak będą one open-source, gorzej jeśli jakieś wewnętrzne). No generalnie jest to takie "hakowanie" jarki, a nie prawilne tworzenie projektu.

1

To java, na lajcie można to zrobić bez dużych problemów

  1. Jar to zwykły ZIP nic więcej
  2. Możesz dodać tego jara w IntelliJ jako "external library" i IntelliJ zdekompiluje ci klasy w środku
  3. Kopiujesz sobie taki zdekompilowany kod do nowego pliku w projekcie i możesz go tam zmienić jak ci sie podoba (jako że całego jara masz jako "zależność" to nie ma problemu z importami)
  4. Kompilujesz sobie tą zmienioną klasę i podmieniasz w jarze
  5. Profit!

Możesz też skopiować cały zdekompilowany kod i niejako "odtworzyć" sobie pierwotny projekt.

0

Można też zdekompilować za pomocą http://java-decompiler.github.io/ i potem normalnie w ide jeszcze raz skompilować.
Dobre jak chce sie przetestować jakieś libki które wymagają licencji na full wersję :P

0

Dzięki za odezw, próbowałem sobie skopiować src, by mieć podobną strukturę. Jednak po takim zabiegu pliki są nieedytowalne. Czy da się to jakoś odwrócić bez koniecznosci kopiowania pojedynczo zawartosci do nowego projektu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1