IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Java Discussion :

Modification d'un fichier .class


Sujet :

Eclipse Java

  1. #1
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut Modification d'un fichier .class
    Bonjour,
    • Je dispose d'un d'un jar (initial.jar) contenant les sources java
    • Je dispose d'un jar (encours.jar), sans les sources, qui correspond à initial.jar avec juste quelques modifications sur certaines classes
    • Je dois faire une petite modification supplémentaire sur une autre classe de ce jar.


    J'aimerais, juste pour cette classe, importer dans encours.jar le fichier java source en allant le chercher dans initial.jar afin de pouvoir faire ma modif dans encours.jar.

    J'ai donc fait une association externe à initial.jar mais, dans encours.jar, la classe que je veux modifier est toujours en .class et je ne peux pas la modifier.

    Merci pour toute aide.

    Philippe

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu ne peux pas modifier directement un .class : il faut modifier le source (le .java) correspondant et le recompiler.

    1. tu décompresses le jar de sources (avec un soft de dézippage quelconque, ou avec la commande jar xf initial.jar)
    2. tu montes un projet avec ces .java comme sources, tu fais tes modifications
    3. si j'ai bien compris tu as des classes dans encours.jar dont tu n'as pas les sources. Et tu cherches bien à modifier des classes qui n'ont pas été modifiées dans encours.jar par rapport à initial.jar
      1. Solution 1 : utiliser un logiciel de décompilation, pour pouvoir récupérer les .java des .class différents dans encours.jar et remplacer ceux qui correspondent dans ton dossier src, ce qui te permet de refaire le jar directement

      1. Solution 2 : reprendre les .class de encours.jar (décompresser le jar de la même façon que pour initial.jar) dans un dossier à part, remplacer les .class des .java modifiés, refaire le jar à partir de ce dossier, par ligne de commande (tu ne peux pas utiliser Eclipse).
    4. Bémol : encours.jar est-il signé ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Merci.
    Lorsque j'explore "encours.jar" avec Ecplise (sous windows), je vois tout : les repertoires, les fichiers : si je double clique sur le .class que je veut modifier, il s'affiche parfaitement bien et il correspond exactement au fichier java que j'ai dans "initial.jar" : et j'ai juste besoin de modifier une valeur : mais le fichier est en lecture seule.
    Philippe

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu vois le source en double-cliquant sur le .class, c'est que tu as un plug-in de décompilation, ou alors que tu as fait le lien avec le jar de sources, mais ça ne veut pas dire que tu peux modifier le source de cette façon. On ne modifie pas directement un .class : c'est le résultat de la compilation d'un .java.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Je vais tenter les deux solutions

    1.Solution 1 : utiliser un logiciel de décompilation, pour pouvoir récupérer les .java des .class différents dans encours.jar et remplacer ceux qui correspondent dans ton dossier src, ce qui te permet de refaire le jar directement
    J'ai pu décompiler encours.jar en encours.jar.src et j'ai modifié la valeur souhaitée dans un des fichiers java
    Comment refaire le jar avec eclipse ?


    1.Solution 2 : reprendre les .class de encours.jar (décompresser le jar de la même façon que pour initial.jar) dans un dossier à part, remplacer les .class des .java modifiés, refaire le jar à partir de ce dossier, par ligne de commande (tu ne peux pas utiliser Eclipse).
    Je suis sous Windows7

    Le ligne de commande pour faire un .class à partir du .java modifié, c'est javac ?
    Quelle est ensuite la ligne de commande pour refaire le jar ?

    Merci

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Pgs Voir le message
    Le ligne de commande pour faire un .class à partir du .java modifié, c'est javac ?
    Oui, c'est javac
    Citation Envoyé par Pgs Voir le message

    Quelle est ensuite la ligne de commande pour refaire le jar ?
    La commande est jar.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Merci,

    a) Javac et jar, je peux les lancer en ligne de commande sous windows ?

    b) Si je passe par la solution 1

    J'ai pu décompiler encours.jar en encours.jar.src et j'ai modifié la valeur souhaitée dans un des fichiers java. Comment refaire le jar avec eclipse ?

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Pgs Voir le message
    Merci,

    a) Javac et jar, je peux les lancer en ligne de commande sous windows ?
    Oui, ce sont des exe.

    Citation Envoyé par Pgs Voir le message

    b) Si je passe par la solution 1

    J'ai pu décompiler encours.jar en encours.jar.src et j'ai modifié la valeur souhaitée dans un des fichiers java. Comment refaire le jar avec eclipse ?
    Par le menu Export d'Eclipse (Menu contextuel sur le projet).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Le encours.jar que j'ai décompilé et modifié est une referenced library de mon projet.

    J'ai maintenant le repértoire encours.jar.src sur mon disque dur.

    Je ne sais pas comment sous Eclipse, sans venir pertuber mon projet, je pourrais importer encours.jar.src pour l'exporter en encours.jar puis venir remplacer ce jar dans les referenced libraries de mon projet.

    Philippe

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu exportes ton projet (celui où les sources sont décompilées de encours.jar) sous forme de jar, en indiquant simplement que la destination est l'endroit où se trouve ton encours.jar référencé dans ton autre projet. Ou tu fais juste de la copie ou déplacement de fichier.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    OK
    Mais pour l'instant, je n'ai fait que décompiler le jar (avec gui-jd) dans un répertoire (nommé automatiquement encours.jar.src).
    Ce n'est donc pas un projet dans Eclipse.
    Je suppose qu'il faut que je crée un nouveau projet en important ce répertoire afin ensuite de l'exporter en jar.
    Mais je ne voudrais pas mettre le bins dans mon projet Eclipse (celui qui utilise encours.jar en librairie référencée).
    Peux-tu m'indiquer comment créer ce nouveau projet "encours" à partir de encours.jar.src ?
    Merci d'avance

  12. #12
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    J'ai finalement opté pour la version :
    * extraction du jar
    * javac du fichier .java concernant la classe à modifier
    * remplacement du .class puis recompilation par jar

    Ça bien marché. Merci beaucoup.

    Question subsidiaire : en ligne de commande, puis-je faire un jar à partir d'un jar décompilé (et pas seulement décompressé) ?

    Philippe

  13. #13
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Pgs Voir le message
    Question subsidiaire : en ligne de commande, puis-je faire un jar à partir d'un jar décompilé (et pas seulement décompressé) ?
    Pour refaire un jar de sources, c'est ça ? Donc, autrement dit, faire un jar avec un dossier de .java au lieu d'un dossier de .class... toujours avec la commande jar donc.

    NB "jar décompilé" ça n'a aucun sens : un jar c'est comme un zip (ou plutôt un arc ou un tar), c'est un agrégat de fichiers. Les .class peuvent être "décompilés" en .java. Le jar peut être éclaté en fichiers.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #14
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Je voulais juste dire que j'avais fait un jar à partir d'un jar décompressé (contenant les .class) et que je voulais savoir (au cas où) s'il était possible de faire de même à partir d'un jar passé par gui-jd et contenant les .java : c'est ça que j'ai appelé JAR décompilé.
    Désolé pour le mauvais terme, mais ta réponse est nickel. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/10/2011, 21h54
  2. Modification simple d'un fichier CLASS
    Par lcfseth dans le forum Général Java
    Réponses: 4
    Dernier message: 13/12/2010, 17h26
  3. [DOM] Classe pour modification d'un fichier XML
    Par Dookie dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2007, 14h59
  4. [JSP][Tomcat] COmment choisir la place des fichiers .class?
    Par mathieu dans le forum Tomcat et TomEE
    Réponses: 16
    Dernier message: 03/03/2004, 09h24
  5. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo