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

avec Java Discussion :

Re-compiler un "projet"


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut Re-compiler un "projet"
    Bonjour et meilleurs vœux,

    Je précise tout de suite: c'est une application qui appartient au client, mais il n'a plus les sources. Pour faire simple, c'est une application Java (fichier .jar) que l'on me demande de modifier (l'application génère un PDF dont il faut modifier la mise en page + texte "en dur" dans l'appli).

    Ne connaissant pas Java... est-il possible de décompiler puis re-compiler le projet (sans rien modifier dans un premier temps) ?

    J'ai réussi à décompiler le fichier "Confirmation.jar", dont voici la structure finale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [META-INF]
    --- MANIFEST.MF
    [resources]
    --- Confirmation.properties
    --- ModifierClient.properties
    --- ShowMessage.properties
    AjoutClient.java
    Confirmation.java
    + 13 fichiers .java (Imprimer, Login, ShowMessage...)
    J'ai essayé en installant le SDK + NetBeans
    - j'ai créé un nouveau projet
    - copié le répertoire du projet, puis collé les sources décompilées dans ./src
    - tenté de modifier le fichier "build.xml" pour qu'il corresponde au projet (1 seule ligne en fait...)

    Bien sûr ça ne fonctionne pas. Le répertoire est apparait bien comme un "projet" mais quand je l'ouvre, la plupart des .java indiquent "Error parsing file" et quand j'ouvre le fichier:
    Incorrect Package
    Import section does not correspond to the specific code style rules
    cf. pièce jointe.


    Pensez-vous que ce soit possible? Peut-être sans passer par NetBeans?

    Merci,
    Cédric
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 190
    Par défaut
    Cela semble être un problème propre à NetBeans.

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    NetBeans ne pourra pas de donner le code contenu dans le jar.
    Il faut passer par un décompilateur java (il en existe un certain nombre avec des résultats variables -> voir Google)

    Si l'application ne fait que produire un pdf, il serait plus fiable de la ré-écrire, je pense.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut
    NetBeans ne pourra pas de donner le code contenu dans le jar.
    Oui, j'ai déjà décompilé

    Si l'application ne fait que produire un pdf
    Justement non... l'application ne fait pas que générer le .jar!

    Il est prévu de la réécrire mais d'ici là, il faudrait pouvoir modifier quelques infos.

    J'ai essayé avec javac et il y a pas mal d'erreurs, mais visiblement des erreurs d'encodage... j'imagine que c'est cmd qui ne doit pas aimer l'UTF8 (apparemment décompilé en utf8?)


    • Déjà, est-il possible de lancer la compil. en "pas à pas" ? Là je vois juste un tas d'erreurs défiler.
      Ou mieux encore, diriger la sortie des erreurs dans un fichier
      ie: javac Confirmation.java > erreurs.txt ?
    • Sinon avez-vous déjà rencontré ce problème (cannot find symbol) ?
      Peut-être dois-je compiler avec autre chose que CMD ?

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Je pense qu'il va y avoir un certains nombre de problèmes.

    Déjà, il faudrait certainement ajouter les librairies de l'application
    dans le projet sinon, ça ne peut pas compiler.

    Exemple : pour du faire du pdf, java va utiliser une libraire spécifique.
    Il faut que NetBeans sache où trouver cette librairie.

    Les librairies de l'application sont dans le répertoire "lib" situé au même niveau que le jar dans l'application d'origine.

    Tu peux essayer d'aller dans les propriétés du projet et d'ajouter tous les jar présents dans ce répertoire "lib"
    Cela devrait permettre à NetBeans de se débrouiller dans un premier temps
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Tu ne connais pas Java mais as tu des notions de comment marche la compilation?
    (chargeur de classe, librairie externe ou non, dépendance ... )?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut
    Je vais essayer d'aller au plus simple possible... NetBeans (du moins la structure des projets) semble très spécifique (ou je me trompe?)

    Donc si je compile avec javac, j'aurai moins de problèmes, non ?

    Je crois que j'ai mal compris le principe de "symbol", il ne s'agit pas d'un caractère (CONFIRMATION D'ACHAT N┬░, Lavabilit├®) mais d'une classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      symbol:   class Paragraph
      location: class Confirmation
    Confirmation.java:612: error: cannot find symbol
    /*  435 */       PdfPCell cellLavabilite = new PdfPCell(new Paragraph("\r\nLavab
    ilit├® : " + this.EdtLavabiliteV.getText(), normal));
                     ^
    => ici la classe "Paragraph"

    => les classes Paragraph, PdfPCell, HeaderFooter, Phrase... ça fait partie des classes Java de base ?

    Dans le lib qui accompagne le .jar, j'ai:
    - beansbinding-1.2.1.jar
    - iText-2.1.6.jar
    - mysql-connector-java-5.1.7-bin.jar

    => si j'utilise javac, où dois-je mettre ces 3 .jar ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut
    Tu ne connais pas Java mais as tu des notions de comment marche la compilation?
    (chargeur de classe, librairie externe ou non, dépendance ... )?
    Notions très vagues... enfin c'est plus que je comprends le principe (des dépendances, librairies...) mais concrètement, non je ne sais pas comment le compilateur fonctionne (chargeur de classe?)

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

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