Wczytanie i edycja pliku .jar

Wczytanie i edycja pliku .jar
B2
  • Rejestracja:około 4 lata
  • Ostatnio:8 miesięcy
  • Postów:22
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.

S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
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.


edytowany 2x, ostatnio: scibi_92
wiciu
  • Rejestracja:ponad 11 lat
  • Ostatnio:15 dni
  • Postów:1205
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.

edytowany 1x, ostatnio: wiciu
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom
aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 miesiące
  • Postów:186
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


Exception oznacza więcej niż tysiąc słów.
B2
  • Rejestracja:około 4 lata
  • Ostatnio:8 miesięcy
  • Postów:22
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?

edytowany 2x, ostatnio: betowen27
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.