Ander

Mac Hoe wijzig ik een java .jar-bestand?

NS

dudleybrooks

originele poster
4 april 2011
San Francisco
  • 14 april 2011
Ik moet een eenvoudige wijziging aanbrengen in een toepassing (Thunderbird.app) - een enkele regel wijzigen in een .jar-bestand. Op mijn oude Windows-computer wist ik welke software ik moest gebruiken. Wat is de gemakkelijkste manier in Snow Leopard om het .jar-bestand in de app te openen, aan te passen en op te slaan? Bij voorkeur dingen gebruiken die in het besturingssysteem zijn ingebouwd; zo niet, dan met behulp van freeware?

jiminau

16 december 2010


Sydney
  • 15 april 2011
Een .jar-bestand is slechts een .zip-bestand met een andere extensie (en een standaard/vooraf gedefinieerde lay-out). U kunt de standaard zip- en unzip-programma's in /usr/bin gebruiken om een ​​.jar-bestand te wijzigen, ervan uitgaande dat het niet is ondertekend.

'Een enkele regel wijzigen in een .jar-bestand' is niet direct logisch in de context van een .jar-bestand. Als je ons precies vertelt wat je met dat .jar-bestand wilt doen, kunnen we je misschien vertellen welke Mac OS X-tools/-programma's je kunt gebruiken en hoe. m

mufflon

15 sep 2006
  • 15 april 2011
Draadloos gepost (Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 zoals Mac OS X; sv-se) AppleWebKit/533.17.9 (KHTML, zoals Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5)

Er zijn eigenlijk drie fasen: uitpakken, modificeren en weer in elkaar zetten.

Uitpakken is eenvoudig: klik met de rechtermuisknop en klik op unarchive (afaik).

Wijziging: als het het manifest is (welke klasse moet worden uitgevoerd enzovoort), dan is het eenvoudig, maar de java-bestanden worden gecompileerd in .class-bestanden en moeten worden gedemonteerd voordat ze kunnen worden gewijzigd.

Om alles samen te voegen, google het 'jar'-commando voor de terminal.

Als het FOSS is, is het beter en gemakkelijker om vanaf de broncode te compileren; zo niet, dan denk ik niet dat het 100% legitiem is. NS

dudleybrooks

originele poster
4 april 2011
San Francisco
  • 15 april 2011
Ik moet een regel wijzigen in een .js-bestand in het .jar-bestand. Maar uw antwoord verduidelijkt mijn vraag:

Ik heb deze wijziging vele, vele malen onder Windows aangebracht (namelijk elke keer dat ik een upgrade downloadde, wat natuurlijk mijn vorige wijziging teniet deed). De persoon die de wijziging aanbeveelde, adviseerde ook een (un)archiver genaamd IZArc, waarin het hele proces vanuit IZArc zou kunnen worden gedaan - open (unarchive) het .jar-bestand, zoek het .js-bestand, bewerk de regel ... en vervolgens klikken op Afsluiten zou alles terugbrengen naar de gearchiveerde staat.

Ik begrijp dat ik de .jar kan dearchiveren met elke unarchiver en de .js kan bewerken met elke teksteditor. Ik denk dat mijn zorg is dat ik, omdat ik geen programmeur ben, iets schadelijks zou kunnen doen bij het opnieuw archiveren -- niet alle relevante bestanden archiveren, of te veel bestanden archiveren, of zoiets.

Dus mijn vraag is: Is er een archiver (hopelijk in het besturingssysteem) die al het bovenstaande vanuit zichzelf zal doen, zodat ik weet dat de uiteindelijke .jar precies de bestanden bevat die het zou moeten bevatten? Of, als dat niet lukt, wat moet ik doen om ervoor te zorgen dat ik het goed opnieuw heb gearchiveerd? Ik realiseer me dat dit op dit forum een ​​complete newbie-vraag is.

niet alleen jay

19 sep 2003
Canada, hè?
  • 15 april 2011
Welnu, als .jar-bestanden gewoon ZIP-bestanden zijn met een andere extensie, dan kunt u ze vrij zippen en uitpakken vanuit de Terminal met behulp van de 'zip'- en 'unzip'-commando's.

chown33

Moderator
Medewerker
9 augustus 2009
het bodemloze vlak
  • 15 april 2011
notjustjay zei: Wel, als .jar-bestanden gewoon ZIP-bestanden zijn met een andere extensie, dan kun je ze vrij zippen en uitpakken vanuit de Terminal met behulp van de 'zip'- en 'unzip'-commando's.

Of gebruik het 'jar'-commando, dat uitdrukkelijk voor dit doel is geschreven, en dat de juiste volgorde voor manifesten handhaaft (die normaal gesproken als de eerste invoer moet staan, of hoogstens een van de eerste paar).

Ik ben er vrij zeker van dat het jar-commando standaard is geïnstalleerd. Dit zou ook zo moeten blijven op 10.7 Lion.
reacties:abronsdilan

niet alleen jay

19 sep 2003
Canada, hè?
  • 15 april 2011
chown33 zei: Of gebruik het 'jar'-commando, dat uitdrukkelijk voor dit doel is geschreven, en de juiste volgorde voor manifesten handhaaft (die normaal gesproken als de eerste invoer moet staan, of hoogstens een van de eerste paar).

Ik ben er vrij zeker van dat het jar-commando standaard is geïnstalleerd. Dit zou ook zo moeten blijven op 10.7 Lion.

Ach, nog beter. Bedankt, wist dat niet.

pilootfout

12 april 2006
Long Island
  • 15 april 2011
Of u kunt het jar-commando gebruiken. De parameters zijn net als de opdrachtregel zip-hulpprogramma's

$jar -xvf jarfile.jar ** Pakt de bestanden uit

** bewerk het bestand **

$jar -cvf jarfile.jar ** Maak het nieuwe Jar-bestand
reacties:abronsdilan NS

dudleybrooks

originele poster
4 april 2011
San Francisco
  • 15 april 2011
Bedankt. De methode van PilotError was rechttoe rechtaan en succesvol - geen softwarefouten, beginnersfouten of zelfs pilootfouten. Maar het had nog steeds meer stappen dan ik vroeger nodig had in Windows: overschakelen van Terminal na het dearchiveren naar de desktop om een ​​editor te gebruiken (mijn fout, toegegeven, voor het niet kennen van de unix-editor(s) waarvan ik aanneem dat Terminal toegang heeft) , dan terug naar Terminal om opnieuw te archiveren -- plus de meer toetsaanslagen die nodig zijn voor de unix-commando's. Ik zou nog steeds graag een editor willen vinden die het *alles* doet in één programma, zoals IZArc deed in Windows: ctrl-open, edit, ctrl-close -- zip-zip (bedoelde woordspeling)!

chown33

Moderator
Medewerker
9 augustus 2009
het bodemloze vlak
  • 15 april 2011
dudleybrooks zei: Bedankt. De methode van PilotError was rechttoe rechtaan en succesvol - geen softwarefouten, beginnersfouten of zelfs pilootfouten. Maar het had nog steeds meer stappen dan ik vroeger nodig had in Windows: overschakelen van Terminal na het dearchiveren naar de desktop om een ​​editor te gebruiken (mijn fout, toegegeven, voor het niet kennen van de unix-editor(s) waarvan ik aanneem dat Terminal toegang heeft) , dan terug naar Terminal om opnieuw te archiveren -- plus de meer toetsaanslagen die nodig zijn voor de unix-commando's. Ik zou nog steeds graag een editor willen vinden die het *alles* doet in één programma, zoals IZArc deed in Windows: ctrl-open, edit, ctrl-close -- zip-zip (bedoelde woordspeling)!

Ik ken geen tool die alles doet. Eerlijk gezegd is dit de eerste keer dat ik ooit iemand heb zien vragen hoe een bestand in een jar op Mac OS moet worden bewerkt, dus ik vermoed dat er geen grote doelgroep is.

Je kunt opdrachtregels in Terminal plakken, dus sla de opdrachten gewoon op in een tekstbestand en kopieer en plak ze weg. Typen is niet nodig.

Dit is ongeveer wat ik zou opslaan in het tekstbestand:
Code: |_+_| Je moet natuurlijk het jarfile.jar wijzigen in het daadwerkelijke jar-bestand dat je hebt.

Ik heb ## getoond omdat dat het eigenlijke commentaarkarakter voor bash is.

Ik heb ook een 'open -e'-opdracht getoond met een padnaam die je moet vervangen. De open -e opent het genoemde bestand in TextEdit.app. Als u in plaats daarvan een andere editor heeft, kunt u 'open' aangeven om deze te gebruiken. Hier is de man-pagina voor het 'open'-commando:
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Kijk vooral naar de -a en -b opties.

Ten slotte kun je daar andere commando's invoegen, zoals een 'cd someDir' of wat je maar wilt.

U zou waarschijnlijk een 'sed'-script kunnen schrijven om de vervanging uit te voeren, zodat u het bestand helemaal niet handmatig hoeft te bewerken. Dan zou je het hele ding in een shellscript kunnen maken, dat in een AppleScript kunnen wikkelen en het als een druppel kunnen opslaan. In de toekomst laat u uw originele app gewoon in de AppleScript-druppel vallen en alle wijzigingen worden automatisch doorgevoerd. Je zou echter al die dingen moeten schrijven en debuggen, en het zou waarschijnlijk uren meer tijd kosten dan alleen maar kopiëren en plakken wanneer de app wordt bijgewerkt.

Als de wijziging aan de pot iets is dat de leverancier zou moeten verstrekken, moet u waarschijnlijk een bugrapport indienen tegen de app. Omdat de schoonste oplossing is om het helemaal niet zelf te hoeven repareren.

pilootfout

12 april 2006
Long Island
  • 15 april 2011
Op Windows kun je programma's zoals pkzip of winzip gebruiken die de inhoud in het venster tonen en je kunt gewoon dubbelklikken op een bestand dat vervolgens onder de motorkap wordt uitgepakt en naar het bijbehorende programma (editor) wordt verzonden.

Er zijn zip-hulpprogramma's onder OS X, maar toegegeven, ik gebruik OS X niet zoals ik Windows gebruik. Ik weet zeker dat je een van de programma's kunt opsporen waarmee je hetzelfde kunt doen, maar voor wat hier nodig was, was het niet de moeite waard om ernaar te zoeken. NS

dudleybrooks

originele poster
4 april 2011
San Francisco
  • 16 april 2011
PilotError en Chown33: ik weet zeker dat je gelijk hebt over het gebrek aan markt in OS X.

Chown33: Bedankt voor het advies over automatisering en de details. Ik zal ze proberen. OMG, misschien word ik wel een programmeur!

Het is iets dat *naar ik* moet worden opgelost, maar het is geen bug: Thunderbird heeft een geavanceerde zoekfunctie voor e-mailadressen, die meerdere adressen kan retourneren. Als u op Schrijven klikt, worden ze allemaal in 'Aan'-velden geplaatst (zonder andere optie). De wijziging zorgt ervoor dat ze in 'BCC'-velden worden geplaatst, voor een betere netiquette. TB 1.x had deze optie vroeger, maar verloor deze in 2.x. P

peregin55

25 februari 2008
  • 8 mei 2011
Emacs zal doen wat je wilt

Op Linux en Mac OS X gebruik ik emacs om bestanden in een jar te bewerken. Typ gewoon:

emacs somejar.jar

Je kunt dan door alle bestanden in de jar bladeren, openen, opslaan, wat dan ook met behulp van standaard emacs-commando's. Alle wijzigingen die u aanbrengt, worden automatisch toegepast op de pot (u hoeft niets handmatig te unjarten)
reacties:abronsdilan NS

dudleybrooks

originele poster
4 april 2011
San Francisco
  • 8 mei 2011
Bedankt!

peregin55

Dat is goed om te weten.

-
Dudley B

grote ramp

14 januari 2010
  • 8 juni 2012
aargh. het werkt niet. Ik moet een paar strings in de .class-bestanden vervangen (ik gebruik precies hetzelfde aantal symbolen), dan probeer ik het opnieuw in te pakken met de jar-opdracht, maar het resulterende bestand is een paar bytes kleiner dan het eerste, en wanneer ik probeer het op mijn mobiel te installeren, er staat 'verkeerd jar-formaat'.
Om het even welke ideeën?

TopHatProducties115

22 aug. 2016
  • 10 november 2016
pilotError zei: Of je kunt het jar-commando gebruiken. De parameters zijn net als de opdrachtregel zip-hulpprogramma's

$jar -xvf jarfile.jar ** Pakt de bestanden uit

** bewerk het bestand **

$jar -cvf jarfile.jar ** Maak het nieuwe Jar-bestand


Werkt dit voor ondertekende Java-archieven?

michaelwarne

11 november 2016
  • 11 november 2016
U kunt vim-editor gebruiken om de bestanden in gecomprimeerde tekstbestanden te bewerken.
  1. Navigeer naar de bestandslocatie vanuit terminal.
  2. Typ vim-naam.jar
  3. Selecteer het bestand dat u wilt wijzigen en druk op Enter
  4. Bewerk het bestand en druk op Esc en :wq! op te slaan en af ​​te sluiten.
Ik hoop dat dit helpt.

okieiam

17 december 2016
  • 18 dec. 2016
ja ik ook, ik gebruikte 7zip om classpath in jar-bestand in Windows te bewerken J

jtara

23 april 2009
  • 21 december 2016
Als u thunderbird.app moet wijzigen, gebruik dan de bron, breng uw wijziging aan en bouw deze op.

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

Clovr

13 nov. 2018
  • 13 nov. 2018
michaelwarne zei: Je kunt vim-editor gebruiken om de bestanden in gecomprimeerde tekstbestanden te bewerken.
  1. Navigeer naar de bestandslocatie vanuit terminal.
  2. Typ vim-naam.jar
  3. Selecteer het bestand dat u wilt wijzigen en druk op Enter
  4. Bewerk het bestand en druk op Esc en :wq! op te slaan en af ​​te sluiten.
Ik hoop dat dit helpt.
kunnen we dit niet automatiseren met een bash? het zou veel helpen als je erdoor verlicht.
reacties:abronsdilan