Inne

Mac Jak zmodyfikować plik java .jar?

D

Dudleybrooks

Oryginalny plakat
4 kwi 2011
San Francisco
  • 14 kwi 2011
Potrzebuję dokonać prostej modyfikacji w aplikacji (Thunderbird.app) - zmiana pojedynczego wiersza w pliku .jar. Na moim starym komputerze z systemem Windows wiedziałem, jakiego oprogramowania użyć. Jaki jest najłatwiejszy sposób otwierania, modyfikowania i zapisywania pliku .jar w aplikacji w systemie Snow Leopard? Najlepiej używać rzeczy wbudowanych w system operacyjny; jeśli nie, to używasz freeware?

Jiminaus

16 grudnia 2010


Sydnej
  • 15 kwi 2011
Plik .jar to po prostu plik .zip z innym rozszerzeniem (i pewnym standardowym/wstępnie zdefiniowanym układem). Możesz użyć standardowych programów zip i unzip w /usr/bin, aby zmienić plik .jar, zakładając, że nie jest on podpisany.

„Zmiana pojedynczego wiersza w pliku .jar” nie ma bezpośredniego sensu w kontekście pliku .jar. Jeśli powiesz nam dokładnie, co chcesz zrobić z tym plikiem .jar, być może będziemy w stanie powiedzieć Ci, jakich narzędzi/programów Mac OS X możesz używać i w jaki sposób. m

muflona

15 września 2006 r.
  • 15 kwi 2011
Opublikowane bezprzewodowo (Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 jak Mac OS X; sv-se) AppleWebKit/533.17.9 (KHTML, jak Gecko) Wersja/5.0.2 Mobile/8C148 Safari/6533.18.5)

Tak naprawdę są trzy fazy: ekstrakcja, modyfikacja i ponowne złożenie.

Wyodrębnianie jest łatwe: kliknij prawym przyciskiem myszy i kliknij opcję cofnij archiwizację (afaik).

Modyfikacja: jeśli jest to manifest (właściwa klasa do uruchomienia itd.), to jest to łatwe, jednak pliki java są kompilowane do plików .class i będą wymagały demontażu przed modyfikacją.

Aby poskładać wszystko razem, wygoogluj polecenie „jar” dla terminala.

Jeśli jest to FOSS, lepiej i łatwiej skompilować ze źródeł; jeśli nie, to nie sądzę, że jest to w 100% legalne. D

Dudleybrooks

Oryginalny plakat
4 kwi 2011
San Francisco
  • 15 kwi 2011
Muszę zmienić wiersz w pliku .js zawartym w pliku .jar. Ale twoja odpowiedź wyjaśnia moje pytanie:

Zmianę tę wprowadzałem wiele, wiele razy w systemie Windows (czyli za każdym razem, gdy pobierałem aktualizację, która oczywiście wymazała moją poprzednią zmianę). Osoba, która poleciła zmianę, poleciła również (nie)archiwizator o nazwie IZArc, w którym cały proces można wykonać z poziomu IZArc - otwórz (rozpakuj) plik .jar, znajdź plik .js, edytuj linię ... a następnie kliknięcie przycisku Zakończ przywróci wszystko do stanu zarchiwizowanego.

Rozumiem, że mogę rozpakować plik .jar za pomocą dowolnego unarchiver i edytować plik .js za pomocą dowolnego edytora tekstu. Myślę, że martwię się, że nie będąc programistą, mogę zrobić coś szkodliwego przy ponownej archiwizacji — nie archiwizować wszystkich odpowiednich plików, nie archiwizować zbyt wielu plików lub coś takiego.

Więc moje pytanie brzmi: Czy istnieje archiwizator (mam nadzieję, że w systemie operacyjnym), który wykona wszystkie powyższe czynności od wewnątrz, tak abym wiedział, że końcowy plik .jar zawiera dokładnie te pliki, które powinien zawierać? Lub, jeśli to się nie powiedzie, co muszę zrobić, aby upewnić się, że poprawnie zarchiwizowałem? Zdaję sobie sprawę, że na tym forum jest to kompletne pytanie dla początkujących.

nie justjay

19 września 2003 r.
Kanada, co?
  • 15 kwi 2011
Cóż, jeśli pliki .jar to po prostu pliki ZIP z innym rozszerzeniem, możesz je swobodnie skompresować i rozpakować z terminala za pomocą poleceń „zip” i „rozpakuj”.

chown33

Moderator
Pracownik
9 sierpnia 2009
Płaszczyzna Otchłani
  • 15 kwi 2011
notjustjay powiedział: Cóż, jeśli pliki .jar są po prostu plikami ZIP z innym rozszerzeniem, możesz je swobodnie skompresować i rozpakować z terminala za pomocą poleceń „zip” i „rozpakuj”.

Lub użyj polecenia „jar”, ​​które zostało napisane specjalnie do tego celu i utrzymuje prawidłową kolejność manifestów (które zazwyczaj muszą znajdować się jako pierwszy wpis lub co najwyżej jeden z kilku pierwszych).

Jestem prawie pewien, że polecenie jar jest instalowane domyślnie. Powinno to obowiązywać również w wersji 10.7 Lion.
Reakcje:abronsdilan

nie justjay

19 września 2003 r.
Kanada, co?
  • 15 kwi 2011
chown33 powiedział: Lub użyj polecenia 'jar', które zostało napisane specjalnie do tego celu i utrzymuje prawidłową kolejność manifestów (które zazwyczaj muszą znajdować się jako pierwszy wpis lub co najwyżej jako jeden z kilku pierwszych).

Jestem prawie pewien, że polecenie jar jest instalowane domyślnie. Powinno to obowiązywać również w wersji 10.7 Lion.

Ach, jeszcze lepiej. Dzięki, nie wiedziałem o tym.

pilotError

12 kwi 2006
Długa wyspa
  • 15 kwi 2011
Możesz też użyć polecenia jar. Parametry są takie same jak narzędzia zip wiersza poleceń

$jar -xvf jarfile.jar ** Rozpakowuje pliki

** edytuj plik **

$jar -cvf jarfile.jar ** Utwórz nowy plik Jar
Reakcje:abronsdilan D

Dudleybrooks

Oryginalny plakat
4 kwi 2011
San Francisco
  • 15 kwi 2011
Dziękuję. Metoda PilotError była prosta i skuteczna – bez błędów oprogramowania, błędów początkujących, a nawet błędów pilota. Ale nadal miał więcej kroków niż potrzebowałem w systemie Windows: przejście z Terminala po rozpakowaniu na pulpit, aby użyć edytora (to moja wina, że ​​nie znam edytorów unixowych, do których, jak zakładam, Terminal ma dostęp) , a następnie wróć do Terminala, aby zarchiwizować — plus więcej naciśnięć klawiszy potrzebnych do poleceń uniksowych. Nadal chciałbym znaleźć edytor, który zrobi to *wszystko* w jednym programie, tak jak zrobił to IZArc w systemie Windows: ctrl-open, edit, ctrl-close -- zip-zip (zamierzona gra słów)!

chown33

Moderator
Pracownik
9 sierpnia 2009
Płaszczyzna Otchłani
  • 15 kwi 2011
Dudleybrooks powiedział: Dzięki. Metoda PilotError była prosta i skuteczna – bez błędów oprogramowania, błędów początkujących, a nawet błędów pilota. Ale nadal miał więcej kroków niż potrzebowałem w systemie Windows: przejście z Terminala po rozpakowaniu na pulpit, aby użyć edytora (to moja wina, że ​​nie znam edytorów unixowych, do których, jak zakładam, Terminal ma dostęp) , a następnie wróć do Terminala, aby zarchiwizować — plus więcej naciśnięć klawiszy potrzebnych do poleceń uniksowych. Nadal chciałbym znaleźć edytor, który zrobi to *wszystko* w jednym programie, tak jak zrobił to IZArc w systemie Windows: ctrl-open, edit, ctrl-close -- zip-zip (zamierzona gra słów)!

Nie znam żadnego narzędzia, które robi wszystko. Szczerze mówiąc, po raz pierwszy widzę, jak ktoś pyta, jak edytować plik w słoiku w systemie Mac OS, więc zgaduję, że nie ma dużego rynku docelowego.

Możesz wkleić wiersze poleceń do Terminala, więc po prostu zapisz polecenia w pliku tekstowym, a następnie skopiuj i wklej. Nie trzeba pisać.

Oto mniej więcej to, co zapisałbym w pliku tekstowym:
Kod: |__+_| Powinieneś oczywiście zmienić plik jarfile.jar na rzeczywisty plik jar, który masz.

Pokazałem ##, ponieważ są to rzeczywiste znaki komentarza dla bash.

Pokazałem również polecenie „otwórz -e” ze ścieżką, którą będziesz musiał zastąpić. Open -e otworzy nazwany plik w TextEdit.app. Jeśli masz inny edytor, który wolisz, możesz powiedzieć „open”, aby go używał. Oto strona podręcznika dla polecenia „otwórz”:
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Przyjrzyj się w szczególności opcjom -a i -b.

Na koniec możesz umieścić tam inne polecenia, takie jak „cd someDir” lub cokolwiek innego.

Prawdopodobnie mógłbyś napisać skrypt 'sed', aby wykonać zamianę, więc nie musiałbyś w ogóle ręcznie edytować pliku. Następnie możesz zrobić wszystko w skrypcie powłoki, owinąć go w AppleScript i zapisać jako kropelkę. Następnie w przyszłości po prostu upuść oryginalną aplikację na droplet AppleScript, a wszystkie zmiany zostaną wykonane automatycznie. Jednak musiałbyś napisać i debugować wszystkie te rzeczy, a prawdopodobnie zajęłoby to godziny więcej czasu niż samo kopiowanie/wklejanie, gdy aplikacja zostanie zaktualizowana.

Jeśli zmiana w słoiku jest czymś, co powinien zapewnić dostawca, prawdopodobnie powinieneś zgłosić błąd w aplikacji. Ponieważ najczystszą poprawką jest to, że nie musisz w ogóle naprawiać tego samodzielnie.

pilotError

12 kwi 2006
Długa wyspa
  • 15 kwi 2011
W systemie Windows możesz używać programów takich jak pkzip lub winzip, które wyświetlają zawartość okna i możesz po prostu dwukrotnie kliknąć plik, który następnie zostanie wyodrębniony pod maską i wysłany do skojarzonego programu (edytora).

W OS X są narzędzia do zip, ale muszę przyznać, że nie używam OS X tak, jak używam systemu Windows. Jestem pewien, że mógłbyś wyśledzić jeden z programów, który pozwoli ci zrobić to samo, ale po to, co było tutaj potrzebne, nie warto było go szukać. D

Dudleybrooks

Oryginalny plakat
4 kwi 2011
San Francisco
  • 16 kwi 2011
PilotError i Chown33: Jestem pewien, że masz rację co do braku rynku w OS X.

Chown33: Dziękuję za porady dotyczące automatyzacji i szczegóły z tym związane. Wypróbuję je. OMG, może zostanę programistą!

Uważam, że to coś, *myślę*, że powinno to zostać naprawione, ale to nie jest błąd: Thunderbird posiada funkcję zaawansowanego wyszukiwania adresów e-mail, która może zwracać wiele adresów. Jeśli klikniesz Zapisz, umieści je wszystkie w polach „Do” (bez innej opcji). Zmiana polega na umieszczeniu ich w polach „BCC”, dla lepszej netykiety. TB 1.x miał tę opcję, ale stracił ją w 2.x. P

peregin55

25 lut 2008
  • 8 maja 2011
Emacs zrobi, co chcesz

W systemie Linux i Mac OS X używam emacs do edycji plików w słoiku. Wystarczy wpisać:

emacs somejar.jar

Następnie możesz przeglądać wszystkie pliki w jar, otwierać, zapisywać, cokolwiek za pomocą standardowych poleceń emacsa. Wszelkie wprowadzone zmiany zostaną automatycznie zastosowane do słoika (nie trzeba niczego ręcznie rozpakowywać)
Reakcje:abronsdilan D

Dudleybrooks

Oryginalny plakat
4 kwi 2011
San Francisco
  • 8 maja 2011
Dziękuję!

peregin55

Dobrze wiedzieć.

-
Dudley b

wielka katastrofa

14 stycznia 2010
  • 8 czerwca 2012
argh. to nie działa. Muszę podmienić kilka stringów w plikach .class (używam dokładnie tej samej liczby symboli), następnie próbuję przepakować go poleceniem jar, ale wynikowy plik jest o kilka bajtów mniejszy niż początkowy, a kiedy spróbuj zainstalować go na moim telefonie komórkowym, na którym jest napisane „niewłaściwy format słoika”.
Jakieś pomysły?

TopHatProdukcje115

22 sierpnia 2016
  • 10 listopada 2016
pilotError powiedział: Możesz też użyć polecenia jar. Parametry są takie same jak narzędzia zip wiersza poleceń

$jar -xvf jarfile.jar ** Rozpakowuje pliki

** edytuj plik **

$jar -cvf jarfile.jar ** Utwórz nowy plik Jar


Czy to zadziała w przypadku podpisanych archiwów Java?

michaelwarne

11 listopada 2016
  • 11 listopada 2016
Możesz użyć edytora vim do edycji plików w dowolnych skompresowanych plikach tekstowych.
  1. Przejdź do lokalizacji pliku z terminala.
  2. Wpisz nazwę vima.jar
  3. Wybierz plik, który chcesz zmienić i naciśnij Enter
  4. Edytuj plik i naciśnij Esc i :wq! zapisać i wyjść.
Mam nadzieję że to pomoże.

okieiam

17 grudnia 2016
  • 18 grudnia 2016
tak, ja też używałem 7zip do edycji ścieżki klasy w pliku jar w systemie Windows J

jtara

23 kwietnia 2009
  • 21 grudnia 2016
Jeśli potrzebujesz zmodyfikować thunderbird.app, użyj źródła, dokonaj zmiany i zbuduj ją.

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions C

Clovra

13 listopada 2018 r.
  • 13 listopada 2018 r.
michaelwarne powiedział: Możesz użyć edytora vim do edycji plików w dowolnych skompresowanych plikach tekstowych.
  1. Przejdź do lokalizacji pliku z terminala.
  2. Wpisz nazwę vima.jar
  3. Wybierz plik, który chcesz zmienić i naciśnij Enter
  4. Edytuj plik i naciśnij Esc i :wq! zapisać i wyjść.
Mam nadzieję że to pomoże.
czy nie możemy tego zautomatyzować za pomocą basha? byłoby bardzo pomocne, gdybyś przez to oświecił.
Reakcje:abronsdilan