Modifier un fichier dans un pot

Je voudrais modifier un fichier dans mon pot. Est-il possible de le faire sans extraire et relancer, depuis mon application?

Fichier que je veux modifier sont des fichiers de configuration, principalement basés sur XML.

La raison pour laquelle je ne suis pas intéressé par le fait que l’application est lancée avec launch4j si je la décompose, je ne peux plus créer le fichier .exe.

Vous pouvez utiliser l’option u pour jar

À partir des tutoriels Java:

 jar uf jar-file input-file(s) 

“Les fichiers déjà présents dans l’archive ayant le même nom de fichier que celui d’un fichier ajouté seront écrasés.”

Voir Mise à jour d’un fichier JAR .

Bien mieux que de refaire le tout. Invoquer cela depuis votre programme semble également possible. Essayez d’ exécuter la ligne de commande en Java

Les fichiers jar Java ont le même format que les fichiers zip – donc si vous avez un utilitaire de fichier zip qui vous permet de modifier une archive, vous avez le pied dans la porte. Deuxième problème, si vous voulez recomstackr une classe ou quelque chose, vous devrez probablement reconstruire le pot; mais un fichier texte ou quelque chose (xml, par exemple) devrait être assez facilement modifié.

Vous pouvez utiliser Vim:

vim my.jar

Vim est capable d’éditer des fichiers texte compressés, étant donné que vous avez un unzip dans votre environnement.

Comme beaucoup l’ont dit, vous ne pouvez pas modifier un fichier dans un JAR sans avoir à récupérer le fichier JAR. C’est encore pire avec Launch4J, vous devez reconstruire le fichier EXE une fois que vous modifiez le fichier JAR. Alors n’allez pas dans cette voie.

Il est généralement déconseillé de placer des fichiers de configuration dans le JAR. Voici ma suggestion Recherchez votre fichier de configuration dans des emplacements prédéterminés (comme le répertoire de base, \ Program Files \ etc.). Si vous trouvez un fichier de configuration, utilisez-le. Sinon, utilisez celui du JAR comme solution de secours. Si vous faites cela, il vous suffit d’écrire le fichier de configuration à l’emplacement prédéterminé et le programme le récupérera.

Un autre avantage de cette approche est que le fichier de configuration modifié n’est pas écrasé si vous mettez à niveau votre logiciel.

C’est peut-être plus de travail que ce que vous envisagez à court terme, mais je pense qu’à long terme, il serait très utile de chercher à utiliser Ant (ou Maven , ou même Bazel ) au lieu de construire manuellement des jar. . De cette façon, vous pouvez simplement cliquer sur le fichier ant (si vous utilisez Eclipse) et reconstruire le fichier jar.

Vous pouvez également ne pas avoir ces fichiers de configuration dans le fichier jar – si vous prévoyez de remplacer ces fichiers régulièrement ou si vous devez les dissortingbuer à plusieurs utilisateurs, le fichier de configuration ne doit pas faire partie de le pot du tout.

Pour développer ce que dit dfa, la raison est que le fichier jar est configuré comme un fichier zip. Si vous souhaitez modifier le fichier, vous devez lire toutes les entrées, modifier celle que vous souhaitez modifier, puis réécrire les entrées dans le fichier jar. J’ai dû le faire avant, et c’était le seul moyen que je pouvais trouver pour le faire.

MODIFIER

Notez que cela utilise les éditeurs de fichiers jar internes à Java, qui sont des stream de fichiers. Je suis sûr qu’il existe un moyen de le faire, vous pouvez lire la totalité du fichier JAR en mémoire, tout modifier, puis réécrire dans un stream de fichiers. C’est ce que je crois que les utilitaires comme 7-Zip et d’autres le font, car je pense que la ToC d’un en-tête zip doit être définie au moment de l’écriture. Cependant, je peux me tromper.

Oui, vous pouvez, à l’aide de SQLite, lire ou écrire dans une firebase database à partir du fichier jar, afin de ne pas avoir à extraire puis à le réutiliser, suivez ma publication http://shoaibinamdar.in/blog/? p = 313

en utilisant la syntaxe “jdbc: sqlite :: resource:” vous pourrez lire et écrire dans une firebase database depuis le fichier jar

Découvrez TrueZip .

Il fait exactement ce que vous voulez (pour éditer des fichiers en ligne dans un fichier jar), via une API de système de fichiers virtuel. Il prend également en charge les archives nestedes (jar à l’intérieur d’un jar).

Extraire le fichier jar pour ex. avec winrar et utiliser CAVAJ:

Cavaj Java Decomstackr est un utilitaire graphique gratuit qui reconstruit le code source Java à partir des fichiers CLASS.

Voici un tutoriel vidéo si vous avez besoin: https://www.youtube.com/watch?v=ByLUeem7680

Pas sûr si cette aide, mais vous pouvez éditer sans extraire:

  1. Ouvrez le fichier jar depuis l’éditeur vi
  2. Sélectionnez le fichier que vous souhaitez modifier dans la liste
  3. Appuyez sur Entrée pour ouvrir le fichier, faites les changements et sauvegardez-le assez simplement

Consultez l’article du blog pour plus de détails http://vinurip.blogspot.com/2015/04/how-to-edit-contents-of-jar-file-on-mac.html

Tant que ce fichier n’est pas .class, c’est-à-dire un fichier de ressources ou un fichier manifeste, vous pouvez le faire.

La manière la plus simple de le faire sous Windows est d’ utiliser WinRAR :

  1. Cliquez avec le bouton droit sur le fichier et choisissez “Ouvrir avec WinRAR” dans le menu contextuel.
  2. Naviguez jusqu’au fichier à éditer et double-cliquez dessus pour l’ouvrir dans l’éditeur par défaut.
  3. Après avoir apporté les modifications, enregistrez et quittez l’éditeur.
  4. Un dialog apparaîtra vous demandant si vous souhaitez mettre à jour le fichier dans l’archive – choisissez “Oui” et le JAR sera mis à jour.