Altro

Mac Come modificare un file java .jar?

D

dudleybrooks

Manifesto originale
4 aprile 2011
San Francisco
  • 14 aprile 2011
Ho bisogno di fare una semplice modifica in un'applicazione (Thunderbird.app) -- cambiando una singola riga in un file .jar. Sul mio vecchio computer Windows sapevo quale software usare. Qual è il modo più semplice in Snow Leopard per aprire, modificare e salvare il file .jar nell'app? Preferibilmente usando cose che sono integrate nel sistema operativo; se no, allora usi il freeware?

jiminaus

16 dicembre 2010


Sydney
  • 15 aprile 2011
Un file .jar è solo un file .zip con un'estensione diversa (e un layout standard/predefinito). Puoi usare i programmi zip e unzip standard in /usr/bin per modificare un file .jar, supponendo che non sia firmato.

'Modificare una singola riga in un file .jar' non ha senso direttamente nel contesto del file .jar. Se ci dici esattamente cosa vuoi fare con quel file .jar, potremmo essere in grado di dirti quali strumenti/programmi di Mac OS X puoi usare e come. m

muffin

15 settembre 2006
  • 15 aprile 2011
Pubblicato in modalità wireless (Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 come Mac OS X; sv-se) AppleWebKit/533.17.9 (KHTML, come Gecko) Versione/5.0.2 Mobile/8C148 Safari/6533.18.5)

Le fasi sono davvero tre: estrazione, modifica e rimontaggio.

L'estrazione è facile: fai clic con il pulsante destro del mouse e fai clic su unarchieve (afaik).

Modifica: se è il manifest (classe da eseguire e così via) allora è facile, tuttavia i file java sono compilati in file .class e dovranno essere smontati prima della modifica.

Per mettere tutto insieme, cerca su Google il comando 'jar' per il terminale.

Se è FOSS è meglio e più facile compilare dai sorgenti; in caso contrario, non penso sia legittimo al 100%. D

dudleybrooks

Manifesto originale
4 aprile 2011
San Francisco
  • 15 aprile 2011
Devo modificare una riga in un file .js contenuto nel file .jar. Ma la tua risposta chiarisce la mia domanda:

Ho apportato questa modifica molte, molte volte in Windows (vale a dire ogni volta che ho scaricato un aggiornamento, che, ovviamente, ha cancellato la mia modifica precedente). La persona che ha consigliato la modifica ha anche consigliato un (un)archiver chiamato IZArc, in cui l'intero processo potrebbe essere eseguito dall'interno di IZArc: apri (annulla) il file .jar, trova il file .js, modifica la riga ... e quindi fare clic su Esci per riportare tutto allo stato archiviato.

Capisco che posso annullare l'archiviazione del .jar con qualsiasi unarchiver e modificare il .js con qualsiasi editor di testo. Immagino che la mia preoccupazione sia che, non essendo un programmatore, potrei fare qualcosa di dannoso nella riarchiviazione: non archiviare tutti i file rilevanti o archiviare troppi file o qualcosa del genere.

Quindi la mia domanda è: esiste un archiviatore (si spera nel sistema operativo) che farà tutto quanto sopra da se stesso, in modo che io sappia che il file .jar finale contiene esattamente i file che dovrebbe contenere? Oppure, in mancanza, cosa devo fare per assicurarmi di averlo riarchiviato correttamente? Mi rendo conto che in questo forum questa è una domanda da principiante completo.

notjustjay

19 settembre 2003
Canada, eh?
  • 15 aprile 2011
Bene, se i file .jar sono semplicemente file ZIP con un'estensione diversa, puoi comprimerli e decomprimerli liberamente dal Terminale usando i comandi 'zip' e 'unzip'.

chown33

Moderatore
Membro dello staff
9 agosto 2009
il Piano Abissale
  • 15 aprile 2011
notjustjay ha detto: Bene, se i file .jar sono semplicemente file ZIP con un'estensione diversa, puoi comprimerli e decomprimerli liberamente dal Terminale usando i comandi 'zip' e 'unzip'.

Oppure usa il comando 'jar', che è scritto espressamente per questo scopo, e mantiene l'ordine corretto per i manifest (che tipicamente devono risiedere come prima voce, o al massimo una delle prime).

Sono abbastanza sicuro che il comando jar sia installato di default. Questo dovrebbe continuare ad essere vero anche su 10.7 Lion.
Reazioni:abronsdilan

notjustjay

19 settembre 2003
Canada, eh?
  • 15 aprile 2011
chown33 ha detto: Oppure usa il comando 'jar', che è scritto espressamente per questo scopo, e mantiene l'ordine corretto per i manifest (che tipicamente deve risiedere come prima voce, o al massimo una delle prime).

Sono abbastanza sicuro che il comando jar sia installato per impostazione predefinita. Questo dovrebbe continuare ad essere vero anche su 10.7 Lion.

Ah, ancora meglio. Grazie, non lo sapevo.

errore pilota

12 aprile 2006
Long Island
  • 15 aprile 2011
Oppure puoi usare il comando jar. I parametri sono proprio come le utilità zip della riga di comando

$jar -xvf jarfile.jar ** Estrae i file

** modifica il file **

$jar -cvf jarfile.jar ** Crea il nuovo file Jar
Reazioni:abronsdilan D

dudleybrooks

Manifesto originale
4 aprile 2011
San Francisco
  • 15 aprile 2011
Grazie. Il metodo di PilotError è stato semplice e di successo: nessun errore software, errore da principiante o persino errore del pilota. Ma aveva ancora più passaggi di quelli di cui avevo bisogno in Windows: passare da Terminale dopo l'annullamento dell'archiviazione, al desktop per utilizzare un editor (colpa mia, ammettiamolo, per non conoscere gli editor unix a cui presumo che Terminal abbia accesso) , quindi torna a Terminale per riarchiviare, oltre a più tasti premuti necessari per i comandi unix. Mi piacerebbe comunque trovare un editor che lo faccia *tutto* all'interno di un programma, come ha fatto IZArc in Windows: ctrl-open, edit, ctrl-close -- zip-zip (gioco di parole)!

chown33

Moderatore
Membro dello staff
9 agosto 2009
il Piano Abissale
  • 15 aprile 2011
dudleybrooks ha detto: Grazie. Il metodo di PilotError è stato semplice e di successo: nessun errore software, errore da principiante o persino errore del pilota. Ma aveva ancora più passaggi di quelli di cui avevo bisogno in Windows: passare da Terminale dopo l'annullamento dell'archiviazione, al desktop per utilizzare un editor (colpa mia, ammettiamolo, per non conoscere gli editor unix a cui presumo che Terminal abbia accesso) , quindi torna a Terminale per riarchiviare, oltre a più tasti premuti necessari per i comandi unix. Mi piacerebbe comunque trovare un editor che lo faccia *tutto* all'interno di un programma, come ha fatto IZArc in Windows: ctrl-open, edit, ctrl-close -- zip-zip (gioco di parole)!

Non conosco nessuno strumento che faccia tutto. Francamente, questa è la prima volta che vedo qualcuno chiedere come modificare un file all'interno di un jar su Mac OS, quindi immagino che non ci sia un grande mercato di riferimento.

Puoi incollare le righe di comando in Terminale, quindi salva i comandi in un file di testo, quindi copia e incolla. Non è necessaria alcuna digitazione.

Ecco più o meno cosa salverei nel file di testo:
Codice: |_+_| Dovresti ovviamente cambiare il jarfile.jar nel file jar effettivo che hai.

Ho mostrato ## perché quelli sono il vero carattere di commento per bash.

Ho anche mostrato un comando 'open -e' con un percorso che dovrai sostituire. L'open -e aprirà il file denominato in TextEdit.app. Se hai un altro editor che preferisci, puoi dire ad 'open' di usarlo al suo posto. Ecco la pagina man per il comando 'open':
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Guarda le opzioni -a e -b in particolare.

Infine, puoi inserire altri comandi, come un 'cd someDir' o qualsiasi altra cosa tu voglia.

Probabilmente potresti scrivere uno script 'sed' per eseguire la sostituzione, in modo da non dover modificare manualmente il file. Quindi potresti trasformare il tutto in uno script di shell, avvolgerlo in un AppleScript e salvarlo come una goccia. Quindi, in futuro, rilasci semplicemente la tua app originale sul droplet AppleScript e farebbe automaticamente tutte le modifiche. Dovresti scrivere ed eseguire il debug di tutte quelle cose, però, e probabilmente ci vorrebbero ore in più rispetto a fare semplicemente un copia/incolla quando l'app viene aggiornata.

Se la modifica al jar è qualcosa che il fornitore dovrebbe fornire, probabilmente dovresti presentare una segnalazione di bug sull'app. Perché la soluzione più pulita è non doverla riparare da soli.

errore pilota

12 aprile 2006
Long Island
  • 15 aprile 2011
Su Windows, puoi usare programmi come pkzip o winzip che mostrano il contenuto nella finestra e puoi semplicemente fare doppio clic su un file che viene poi estratto sotto il cofano e inviato al programma associato (editor).

Ci sono utility zip sotto OS X, ma devo ammettere che non uso OS X come uso Windows. Sono sicuro che potresti rintracciare uno dei programmi che ti permetterà di fare la stessa cosa, ma per quello che era necessario qui, non valeva la pena cercarlo. D

dudleybrooks

Manifesto originale
4 aprile 2011
San Francisco
  • 16 aprile 2011
PilotError e Chown33: sono sicuro che hai ragione sulla mancanza di mercato in OS X.

Chown33: Grazie per i consigli sull'automazione e sui dettagli coinvolti. le proverò. OMG, potrei diventare un programmatore!

È qualcosa che *penso* dovrebbe essere corretto, ma non è un bug: Thunderbird ha una funzione di ricerca avanzata per gli indirizzi e-mail, che potrebbe restituire più indirizzi. Se fai clic su Scrivi, li inserisce tutti nei campi 'A' (senza altre opzioni). La modifica li fa inserire nei campi 'BCC', per una migliore netiquette. TB 1.x aveva questa opzione, ma l'ha persa in 2.x. P

peregin55

25 febbraio 2008
  • 8 maggio 2011
Emacs farà quello che vuoi

Su Linux e Mac OS X uso emacs per modificare i file all'interno di un jar. Basta digitare:

emacs somejar.jar

Puoi quindi sfogliare tutti i file nel jar, aprire, salvare, qualunque cosa usando i comandi standard di emacs. Tutte le modifiche apportate verranno applicate automaticamente al barattolo (non è necessario rimuovere manualmente nulla)
Reazioni:abronsdilan D

dudleybrooks

Manifesto originale
4 aprile 2011
San Francisco
  • 8 maggio 2011
Grazie!

peregin55

Buono a sapersi.

-
Dudley B

grande disastro

14 gennaio 2010
  • 8 giugno 2012
argh. non funziona. Ho bisogno di sostituire alcune stringhe nei file .class (uso esattamente lo stesso numero di simboli), quindi provo a reimballarlo con il comando jar, ma il file risultante è di alcuni byte più piccolo di quello iniziale e quando ho prova a installarlo sul mio cellulare, dice 'formato jar errato'.
Qualche idea?

CilindroProduzioni115

22 agosto 2016
  • 10 novembre 2016
pilotError ha detto: oppure puoi usare il comando jar. I parametri sono proprio come le utilità zip della riga di comando

$jar -xvf jarfile.jar ** Estrae i file

** modifica il file **

$jar -cvf jarfile.jar ** Crea il nuovo file Jar


Funzionerà per gli archivi java firmati?

michaelwarne

11 novembre 2016
  • 11 novembre 2016
Puoi usare l'editor vim per modificare i file in qualsiasi file di testo compresso.
  1. Vai alla posizione del file dal terminale.
  2. Digita nome vim.jar
  3. Seleziona il file che vuoi modificare e premi Invio
  4. Modifica il file e premi Esc e :wq! per salvare e uscire.
Spero questo sia di aiuto.

okieiam

17 dicembre 2016
  • 18 dicembre 2016
sì anch'io, usavo 7zip per modificare il classpath nel file jar in Windows J

jtara

23 aprile 2009
  • 21 dicembre 2016
Se hai bisogno di modificare thunderbird.app, usa il sorgente, apporta la tua modifica e compilalo.

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

Clovr

13 novembre 2018
  • 13 novembre 2018
michaelwarne ha detto: È possibile utilizzare l'editor vim per modificare i file in qualsiasi file di testo compresso.
  1. Vai alla posizione del file dal terminale.
  2. Digita nome vim.jar
  3. Seleziona il file che vuoi modificare e premi Invio
  4. Modifica il file e premi Esc e :wq! per salvare e uscire.
Spero questo sia di aiuto.
non possiamo automatizzarlo usando un bash? sarebbe molto utile se lo illuminassi.
Reazioni:abronsdilan