Autre

Mac Comment modifier un fichier java .jar ?

dudleybrooks

Affiche originale
4 avr. 2011
San Francisco
  • 14 avr. 2011
J'ai besoin de faire une simple modification dans une application (Thunderbird.app) - changer une seule ligne dans un fichier .jar. Sur mon ancien ordinateur Windows, je savais quel logiciel utiliser. Quel est le moyen le plus simple dans Snow Leopard d'ouvrir, de modifier et d'enregistrer le fichier .jar dans l'application ? Utiliser de préférence des éléments intégrés au système d'exploitation ; sinon, utiliser un logiciel gratuit ?

jiminaus

16 déc. 2010


Sydney
  • 15 avr. 2011
Un fichier .jar est juste un fichier .zip avec une extension différente (et une disposition standard/prédéfinie). Vous pouvez utiliser les programmes zip et unzip standard dans /usr/bin pour modifier un fichier .jar, en supposant qu'il n'est pas signé.

« Modifier une seule ligne dans un fichier .jar » n'a pas de sens direct dans le contexte du fichier .jar. Si vous nous dites exactement ce que vous voulez faire avec ce fichier .jar, nous pourrons peut-être vous dire quels outils/programmes Mac OS X vous pouvez utiliser et comment. M

mufflon

15 sept. 2006
  • 15 avr. 2011
Posté sans fil (Mozilla/5.0 (iPhone ; U ; CPU iPhone OS 4_2_1 comme Mac OS X ; sv-se) AppleWebKit/533.17.9 (KHTML, comme Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5)

Il y a en réalité trois phases : l'extraction, la modification et le remontage.

L'extraction est facile : faites un clic droit et cliquez pour désarchiver (si je ne m'abuse).

Modification : s'il s'agit du manifeste (classe à exécuter, etc.), c'est facile, cependant les fichiers java sont compilés dans des fichiers .class et devront être désassemblés avant modification.

Pour tout reconstituer, recherchez sur Google la commande « jar » pour le terminal.

S'il s'agit d'un logiciel libre, il est meilleur et plus facile de compiler à partir des sources ; sinon, je ne pense pas que ce soit 100% légitime.

dudleybrooks

Affiche originale
4 avr. 2011
San Francisco
  • 15 avr. 2011
J'ai besoin de modifier une ligne dans un fichier .js contenu dans le fichier .jar. Mais ta réponse clarifie ma question :

J'ai effectué cette modification de nombreuses fois sous Windows (notamment à chaque fois que j'ai téléchargé une mise à niveau, ce qui, bien sûr, a effacé ma modification précédente). La personne qui a recommandé le changement a également recommandé un (dés)archiveur appelé IZArc, dans lequel l'ensemble du processus pourrait être effectué depuis l'intérieur d'IZArc - ouvrez (désarchivez) le fichier .jar, recherchez le fichier .js, modifiez la ligne ... puis cliquer sur Quitter ramènerait tout à son état archivé.

Je comprends que je peux désarchiver le .jar avec n'importe quel désarchiveur et éditer le .js avec n'importe quel éditeur de texte. Je suppose que mon inquiétude est que, n'étant pas un programmeur, je puisse faire quelque chose de dangereux lors du réarchivage - ne pas archiver tous les fichiers pertinents, ou archiver trop de fichiers, ou quelque chose du genre.

Ma question est donc la suivante : existe-t-il un archiveur (espérons-le dans le système d'exploitation) qui fera tout ce qui précède à partir de lui-même, afin que je sache que le fichier .jar final contient exactement les fichiers qu'il devrait contenir ? Ou, à défaut, que dois-je faire pour m'assurer de l'avoir réarchivé correctement ? Je me rends compte que dans ce forum c'est une question de débutant complet.

pasjustjay

19 sept. 2003
canadien, hein ?
  • 15 avr. 2011
Eh bien, si les fichiers .jar sont simplement des fichiers ZIP avec une extension différente, alors vous pouvez les compresser et les décompresser librement depuis le terminal en utilisant les commandes 'zip' et 'unzip'.

chown33

Modérateur
Membre du staff
9 août 2009
le plan abyssal
  • 15 avr. 2011
notjustjay a déclaré : Eh bien, si les fichiers .jar sont simplement des fichiers ZIP avec une extension différente, vous pouvez les compresser et les décompresser librement à partir du terminal à l'aide des commandes 'zip' et 'unzip'.

Ou utilisez la commande « jar », qui est écrite expressément à cet effet, et maintient l'ordre correct des manifestes (qui doivent généralement résider comme la première entrée, ou au plus l'une des premières).

Je suis presque sûr que la commande jar est installée par défaut. Cela devrait également continuer à être vrai sur 10.7 Lion.
Réactions :abronsdilan

pasjustjay

19 sept. 2003
canadien, hein ?
  • 15 avr. 2011
chown33 a dit : Ou utilisez la commande 'jar', qui est écrite expressément à cet effet, et maintient l'ordre correct des manifestes (qui doit généralement résider comme la première entrée, ou au plus l'une des premières).

Je suis presque sûr que la commande jar est installée par défaut. Cela devrait également continuer à être vrai sur 10.7 Lion.

Ah, encore mieux. Merci, je ne savais pas à ce sujet.

pilotError

12 avr. 2006
Long Island
  • 15 avr. 2011
Ou vous pouvez utiliser la commande jar. Les paramètres sont comme les utilitaires zip de la ligne de commande

$jar -xvf jarfile.jar ** Extrait les fichiers

** modifier le fichier **

$jar -cvf jarfile.jar ** Créer le nouveau fichier Jar
Réactions :abronsdilan

dudleybrooks

Affiche originale
4 avr. 2011
San Francisco
  • 15 avr. 2011
Merci. La méthode de PilotError était simple et réussie - pas d'erreurs logicielles, d'erreurs de débutant ou même d'erreurs de pilote. Mais il y avait encore plus d'étapes que j'en avais besoin dans Windows : passer du Terminal après le désarchivage, au bureau pour utiliser un éditeur (ma faute, certes, de ne pas connaître le ou les éditeurs unix auxquels je suppose que Terminal a accès) , puis revenez au terminal pour réarchiver - plus les frappes supplémentaires nécessaires pour les commandes unix. J'aimerais toujours trouver un éditeur qui fait tout * dans un seul programme, comme IZArc l'a fait sous Windows : ctrl-open, edit, ctrl-close -- zip-zip (jeu de mots) !

chown33

Modérateur
Membre du staff
9 août 2009
le plan abyssal
  • 15 avr. 2011
dudleybrooks a dit : Merci. La méthode de PilotError était simple et réussie - pas d'erreurs logicielles, d'erreurs de débutant ou même d'erreurs de pilote. Mais il y avait encore plus d'étapes que j'en avais besoin dans Windows : passer du Terminal après le désarchivage, au bureau pour utiliser un éditeur (ma faute, certes, de ne pas connaître le ou les éditeurs unix auxquels je suppose que Terminal a accès) , puis revenez au terminal pour réarchiver - plus les frappes supplémentaires nécessaires pour les commandes unix. J'aimerais toujours trouver un éditeur qui fait tout * dans un seul programme, comme IZArc l'a fait sous Windows : ctrl-open, edit, ctrl-close -- zip-zip (jeu de mots) !

Je ne connais aucun outil qui fait tout. Franchement, c'est la première fois que je vois quelqu'un demander comment éditer un fichier dans un jar sur Mac OS, donc je suppose qu'il n'y a pas un grand marché cible.

Vous pouvez coller des lignes de commande dans Terminal, alors enregistrez simplement les commandes dans un fichier texte, puis copiez et collez. Aucune saisie nécessaire.

Voici à peu près ce que je voudrais enregistrer dans le fichier texte :
Code : |_+_| Vous devez évidemment remplacer le fichier jarfile.jar par le fichier jar que vous avez.

J'ai montré ## parce qu'il s'agit du véritable caractère de commentaire pour bash.

J'ai également montré une commande 'open -e' avec un chemin que vous devrez remplacer. L'open -e ouvrira le fichier nommé dans TextEdit.app. Si vous préférez un autre éditeur à la place, vous pouvez dire à 'open' de l'utiliser à la place. Voici la page de manuel de la commande 'open' :
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Regardez les options -a et -b en particulier.

Enfin, vous pouvez y mettre d'autres commandes, comme un 'cd someDir' ou tout ce que vous voulez.

Vous pourriez probablement écrire un script « sed » pour effectuer le remplacement, de sorte que vous n'auriez pas du tout à modifier manuellement le fichier. Ensuite, vous pouvez transformer le tout dans un script shell, l'encapsuler dans un AppleScript et l'enregistrer en tant que droplet. Ensuite, à l'avenir, il vous suffit de déposer votre application d'origine sur le droplet AppleScript et toutes les modifications seront automatiquement effectuées. Vous auriez à écrire et à déboguer tout cela, cependant, et cela prendrait probablement des heures de plus que de simplement faire un copier/coller lorsque l'application est mise à jour.

Si la modification apportée au fichier jar est quelque chose que le fournisseur devrait fournir, vous devriez probablement déposer un rapport de bogue concernant l'application. Parce que la solution la plus propre est de ne pas avoir à le réparer vous-même du tout.

pilotError

12 avr. 2006
Long Island
  • 15 avr. 2011
Sous Windows, vous pouvez utiliser des programmes tels que pkzip ou winzip qui affichent le contenu de la fenêtre et vous pouvez simplement double-cliquer sur un fichier qui est ensuite extrait sous le capot et envoyé au programme associé (éditeur).

Il existe des utilitaires zip sous OS X, mais il est vrai que je n'utilise pas OS X comme j'utilise Windows. Je suis sûr que vous pourriez retrouver l'un des programmes qui vous permettra de faire la même chose, mais pour ce qui était nécessaire ici, cela ne valait pas la peine de le chercher.

dudleybrooks

Affiche originale
4 avr. 2011
San Francisco
  • 16 avr. 2011
PilotError et Chown33 : je suis sûr que vous avez raison sur le manque de marché sous OS X.

Chown33 : Merci pour les conseils sur l'automatisation et les détails impliqués. je vais les essayer. OMG, je pourrais devenir programmeur !

C'est quelque chose que *je* pense devoir être corrigé, mais ce n'est pas un bogue : Thunderbird dispose d'une fonction de recherche avancée pour les adresses e-mail, qui peut renvoyer plusieurs adresses. Si vous cliquez sur Écrire, il les place tous dans les champs « À » (sans autre option). Le changement fait qu'il les met dans les champs 'BCC', pour une meilleure nétiquette. TB 1.x avait cette option, mais l'a perdue dans 2.x. P

peregin55

25 février 2008
  • 8 mai 2011
Emacs fera ce que vous voulez

Sous Linux et Mac OS X, j'utilise emacs pour éditer des fichiers dans un jar. Tapez simplement :

emacs somejar.jar

Vous pouvez ensuite parcourir tous les fichiers du pot, les ouvrir, les enregistrer, peu importe à l'aide des commandes emacs standard. Toutes les modifications que vous apportez seront automatiquement appliquées au pot (pas besoin de déverrouiller manuellement quoi que ce soit)
Réactions :abronsdilan

dudleybrooks

Affiche originale
4 avr. 2011
San Francisco
  • 8 mai 2011
Merci!

peregin55

C'est bon à savoir.

-
Dudley B

grand désastre

14 janvier 2010
  • 8 juin 2012
arg. ça ne marche pas. Je dois remplacer quelques chaînes dans les fichiers .class (j'utilise exactement le même nombre de symboles), puis j'essaie de le reconditionner avec la commande jar, mais le fichier résultant est de quelques octets plus petit que le premier, et quand je essayez de l'installer sur mon mobile, il indique 'mauvais format de pot'.
Des idées?

TopHatProductions115

22 août 2016
  • 10 novembre 2016
pilotError a dit : Ou vous pouvez utiliser la commande jar. Les paramètres sont comme les utilitaires zip de la ligne de commande

$jar -xvf jarfile.jar ** Extrait les fichiers

** modifier le fichier **

$jar -cvf jarfile.jar ** Créer le nouveau fichier Jar


Cela fonctionnera-t-il pour les archives java signées ?

michaelwarne

11 novembre 2016
  • 11 novembre 2016
Vous pouvez utiliser l'éditeur vim pour éditer les fichiers dans n'importe quel fichier texte compressé.
  1. Accédez à l'emplacement du fichier à partir du terminal.
  2. Tapez vim nom.jar
  3. Sélectionnez le fichier que vous souhaitez modifier et appuyez sur Entrée
  4. Modifiez le fichier et appuyez sur Echap et :wq! pour enregistrer et quitter.
J'espère que cela t'aides.

okieiam

17 déc. 2016
  • 18 déc. 2016
ouais moi aussi, j'avais l'habitude d'utiliser 7zip pour éditer le chemin de classe dans le fichier jar sous Windows J

jtara

23 avr. 2009
  • 21 déc. 2016
Si vous devez modifier thunderbird.app, utilisez la source, apportez votre modification et construisez-la.

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

Clovr

13 novembre 2018
  • 13 novembre 2018
michaelwarne a dit : Vous pouvez utiliser l'éditeur vim pour éditer les fichiers dans n'importe quel fichier texte compressé.
  1. Accédez à l'emplacement du fichier à partir du terminal.
  2. Tapez vim nom.jar
  3. Sélectionnez le fichier que vous souhaitez modifier et appuyez sur Entrée
  4. Modifiez le fichier et appuyez sur Echap et :wq! pour enregistrer et quitter.
J'espère que cela t'aides.
ne pouvons-nous pas automatiser cela à l'aide d'un bash ? ce serait très utile si vous vous éclairez à travers cela.
Réactions :abronsdilan