Altres

Mac Com modificar un fitxer java .jar?

D

dudleybrooks

Cartell original
4 d'abril de 2011
Sant Francesc
  • 14 d'abril de 2011
Necessito fer una modificació senzilla en una aplicació (Thunderbird.app): canviant una sola línia en un fitxer .jar. Al meu antic ordinador Windows sabia quin programari utilitzar. Quina és la manera més senzilla a Snow Leopard d'obrir, modificar i desar el fitxer .jar a l'aplicació? Preferiblement utilitzant coses integrades al sistema operatiu; si no, utilitzar programari gratuït?

jiminaus

16 de desembre de 2010


Sydney
  • 15 d'abril de 2011
Un fitxer .jar és només un fitxer .zip amb una extensió diferent (i un disseny estàndard/predefinit). Podeu utilitzar els programes estàndard de zip i descomprimir a /usr/bin per canviar un fitxer .jar, suposant que no està signat.

'Canviar una sola línia en un fitxer .jar' no té sentit directament en el context del fitxer .jar. Si ens expliqueu exactament què voleu fer amb aquest fitxer .jar, potser podrem dir-vos quines eines/programes de Mac OS X podeu utilitzar i com. M

mufló

set 15, 2006
  • 15 d'abril de 2011
Publicat sense fil (Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 com Mac OS X; sv-se) AppleWebKit/533.17.9 (KHTML, com Gecko) Versió/5.0.2 Mobile/8C148 Safari/6533.18.5)

Realment hi ha tres fases: extracció, modificació i muntatge de nou.

L'extracció és fàcil: feu clic amb el botó dret i feu clic a desarxivar (afaik).

Modificació: si és el manifest (quina classe s'executa, etc.), és fàcil, però els fitxers java es compilen en fitxers .class i caldrà desmuntar-los abans de modificar-los.

Per ajuntar-ho tot, busqueu a Google l'ordre 'jar' del terminal.

Si és FOSS, és millor i més fàcil compilar des de la font; si no, no crec que sigui 100% legítim. D

dudleybrooks

Cartell original
4 d'abril de 2011
Sant Francesc
  • 15 d'abril de 2011
He de canviar una línia en un fitxer .js contingut al fitxer .jar. Però la teva resposta aclareix la meva pregunta:

Vaig fer aquest canvi moltes i moltes vegades a Windows (és a dir, cada vegada que baixava una actualització, que, per descomptat, va eliminar el meu canvi anterior). La persona que va recomanar el canvi també va recomanar un (des)arxivar anomenat IZArc, en el qual tot el procés es podia fer des de dins d'IZArc: obrir (desarxivar) el fitxer .jar, trobar el fitxer .js, editar la línia... i després fer clic a Surt tornaria tot al seu estat arxivat.

Entenc que puc desarxivar el .jar amb qualsevol desarxivat i editar el .js amb qualsevol editor de text. Suposo que la meva preocupació és que, al no ser programador, podria fer alguna cosa perjudicial en tornar a arxivar: no arxivar tots els fitxers rellevants, o arxivar massa fitxers, o alguna cosa així.

Així que la meva pregunta és: hi ha un arxivador (esperem que al sistema operatiu) que faci tot l'anterior des de si mateix, de manera que sé que el .jar final conté exactament els fitxers que hauria de contenir? O, en cas contrari, què he de fer per assegurar-me que l'he tornat a arxivar correctament? M'adono que en aquest fòrum aquesta és una pregunta de principiant.

no justjay

set 19, 2003
Canadà, eh?
  • 15 d'abril de 2011
Bé, si els fitxers .jar són simplement fitxers ZIP amb una extensió diferent, podeu comprimir-los i descomprimir-los lliurement des del Terminal mitjançant les ordres 'zip' i 'descomprimir'.

chown33

Moderador
Membre del personal
9 d'agost de 2009
el pla abismal
  • 15 d'abril de 2011
notjustjay va dir: Bé, si els fitxers .jar són simplement fitxers ZIP amb una extensió diferent, podeu comprimir-los i descomprimir-los lliurement des del Terminal mitjançant les ordres 'zip' i 'descomprimir'.

O utilitzeu l'ordre 'jar', que s'escriu expressament per a aquest propòsit, i manté l'ordre correcte dels manifests (que normalment han de residir com a primera entrada, o com a màxim una de les primeres).

Estic bastant segur que l'ordre jar està instal·lada per defecte. Això també hauria de continuar sent cert a 10.7 Lion.
Reaccions:abronsdilan

no justjay

set 19, 2003
Canadà, eh?
  • 15 d'abril de 2011
chown33 va dir: O utilitzeu l'ordre 'jar', que s'escriu expressament per a aquest propòsit, i manté l'ordre correcte dels manifests (que normalment han de residir com a primera entrada, o com a molt una de les primeres).

Estic bastant segur que l'ordre jar està instal·lada per defecte. Això també hauria de continuar sent cert a 10.7 Lion.

Ah, encara millor. Gràcies, no ho sabia.

pilotError

12 d'abril de 2006
Illa llarga
  • 15 d'abril de 2011
O podeu utilitzar l'ordre jar. Els paràmetres són com les utilitats zip de la línia d'ordres

$jar -xvf jarfile.jar ** Extreu els fitxers

** edita el fitxer **

$jar -cvf jarfile.jar ** Creeu el nou fitxer Jar
Reaccions:abronsdilan D

dudleybrooks

Cartell original
4 d'abril de 2011
Sant Francesc
  • 15 d'abril de 2011
Gràcies. El mètode de PilotError va ser senzill i reeixit: sense errors de programari, errors de principiants o fins i tot errors de pilot. Però encara tenia més passos dels que solia necessitar a Windows: canviar de Terminal després de desarxivar, a l'escriptori per utilitzar un editor (la meva culpa, és cert, per no conèixer els editors Unix als quals suposo que Terminal té accés) , després torneu a la terminal per tornar a arxivar -- a més de les pulsacions de tecles necessàries per a les ordres Unix. Encara m'agradaria trobar un editor que ho faci *tot* dins d'un programa, com ho va fer IZArc a Windows: ctrl-open, edit, ctrl-close -- zip-zip (juego de paraules)!

chown33

Moderador
Membre del personal
9 d'agost de 2009
el pla abismal
  • 15 d'abril de 2011
dudleybrooks va dir: Gràcies. El mètode de PilotError va ser senzill i reeixit: sense errors de programari, errors de principiants o fins i tot errors de pilot. Però encara tenia més passos dels que necessitava a Windows: canviar de Terminal després de desarxivar, a l'escriptori per utilitzar un editor (perfecte meva, és cert, per no conèixer els editors Unix als quals suposo que Terminal té accés) , després torneu a la terminal per tornar a arxivar -- a més de les pulsacions de tecles necessàries per a les ordres Unix. Encara m'agradaria trobar un editor que ho faci *tot* dins d'un programa, com ho va fer IZArc a Windows: ctrl-open, edit, ctrl-close -- zip-zip (juego de paraules)!

No conec cap eina que ho faci tot. Francament, aquesta és la primera vegada que veig algú preguntar com editar un fitxer dins d'un pot a Mac OS, així que suposo que no hi ha un gran mercat objectiu.

Podeu enganxar les línies d'ordres al Terminal, així que només cal que deseu les ordres en un fitxer de text i després copieu-les i enganxeu-les. No cal escriure.

Aquí teniu aproximadament el que desaria al fitxer de text:
Codi: |_+_| Òbviament, hauríeu de canviar el fitxer jarfile.jar pel fitxer jar real que teniu.

He mostrat ## perquè aquests són el caràcter de comentari real de bash.

També he mostrat una ordre 'obri -e' amb un nom de camí que haureu de substituir. L'obertura -e obrirà el fitxer amb nom a TextEdit.app. Si teniu un altre editor que preferiu, podeu dir a 'obrir' perquè l'utilitzi. Aquí teniu la pàgina de manual per a l'ordre 'obrir':
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Mireu les opcions -a i -b en particular.

Finalment, podeu posar-hi altres ordres, com ara un 'cd someDir' o qualsevol altra cosa que vulgueu.

Probablement podríeu escriure un script 'sed' per fer la substitució, de manera que no haureu d'editar el fitxer manualment. Aleshores, podríeu convertir-ho tot en un script de shell, embolicar-lo en un AppleScript i desar-lo com a gota. Aleshores, en el futur, simplement deixeu anar la vostra aplicació original a la gota AppleScript i faria tots els canvis automàticament. Tanmateix, hauríeu d'escriure i depurar totes aquestes coses, i probablement trigaria hores més que fer una copia/enganxa quan l'aplicació s'actualitzi.

Si el canvi al jar és quelcom que el venedor hauria de proporcionar, probablement haureu de presentar un informe d'error contra l'aplicació. Perquè la solució més neta és no haver de solucionar-ho tu mateix.

pilotError

12 d'abril de 2006
Illa llarga
  • 15 d'abril de 2011
A Windows, podeu utilitzar programes com pkzip o winzip que mostren el contingut a la finestra i només podeu fer doble clic en un fitxer que després s'extreu sota el capó i s'envia al programa associat (editor).

Hi ha utilitats zip sota OS X, però és cert que no faig servir OS X com faig servir Windows. Estic segur que podríeu rastrejar algun dels programes que us permetran fer el mateix, però pel que es necessitava aquí, no valia la pena buscar-lo. D

dudleybrooks

Cartell original
4 d'abril de 2011
Sant Francesc
  • 16 d'abril de 2011
PilotError i Chown33: Estic segur que teniu raó sobre la manca de mercat a OS X.

Chown33: Gràcies pels consells sobre l'automatització i els detalls implicats. Les provaré. OMG, podria convertir-me en programador!

És una cosa que *crec* que s'hauria d'arreglar, però no és un error: Thunderbird té una funció de cerca avançada per a adreces de correu electrònic, que podria retornar diverses adreces. Si feu clic a Escriure, els posarà tots als camps 'A' (sense cap altra opció). El canvi fa que els posi als camps 'BCC', per a una millor netiqueta. TB 1.x solia tenir aquesta opció, però la va perdre a 2.x. P

peregin55

Feb 25, 2008
  • 8 de maig de 2011
Emacs farà el que vulguis

A Linux i Mac OS X faig servir emacs per editar fitxers dins d'un jar. Només escriu:

emacs somejar.jar

A continuació, podeu navegar per tots els fitxers del jar, obrir-los, desar-los, el que sigui utilitzant les ordres estàndard d'emacs. Qualsevol canvi que feu s'aplicarà automàticament al flascó (no cal desactivar manualment res)
Reaccions:abronsdilan D

dudleybrooks

Cartell original
4 d'abril de 2011
Sant Francesc
  • 8 de maig de 2011
Gràcies!

peregin55

Es bo saber-ho.

--
Dudley B

gran desastre

14 de gener de 2010
  • 8 de juny de 2012
argh. no funciona. Necessito substituir unes quantes cadenes als fitxers .class (utilitzo exactament el mateix nombre de símbols), després intento tornar-la a empaquetar amb l'ordre jar, però el fitxer resultant és uns quants bytes més petit que l'inicial, i quan prova d'instal·lar-lo al meu mòbil, diu 'format jar incorrecte'.
Alguna idea?

TopHatProductions115

22 d'agost de 2016
  • 10 de novembre de 2016
pilotError va dir: O podeu utilitzar l'ordre jar. Els paràmetres són com les utilitats zip de la línia d'ordres

$jar -xvf jarfile.jar ** Extreu els fitxers

** edita el fitxer **

$jar -cvf jarfile.jar ** Creeu el nou fitxer Jar


Funcionarà per a arxius java signats?

miquelwarne

11 de novembre de 2016
  • 11 de novembre de 2016
Podeu utilitzar l'editor vim per editar els fitxers de qualsevol fitxer de text comprimit.
  1. Navegueu a la ubicació del fitxer des del terminal.
  2. Escriviu vim name.jar
  3. Seleccioneu el fitxer que voleu canviar i premeu Enter
  4. Editeu el fitxer i premeu Esc i :wq! per guardar i sortir.
Espero que això ajudi.

okieiam

17 de desembre de 2016
  • 18 de desembre de 2016
Sí, jo també, solia utilitzar 7zip per editar classpath al fitxer jar a Windows J

jtara

Mar 23, 2009
  • 21 de desembre de 2016
Si necessiteu modificar el thunderbird.app, feu servir la font, feu el canvi i creeu-lo.

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

Clovr

13 de novembre de 2018
  • 13 de novembre de 2018
michaelwarne va dir: Podeu utilitzar l'editor vim per editar els fitxers de qualsevol fitxer de text comprimit.
  1. Navegueu a la ubicació del fitxer des del terminal.
  2. Escriviu vim name.jar
  3. Seleccioneu el fitxer que voleu canviar i premeu Enter
  4. Editeu el fitxer i premeu Esc i :wq! per guardar i sortir.
Espero que això ajudi.
no podem automatitzar-ho amb un bash? Seria molt útil si t'aclareixes.
Reaccions:abronsdilan