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 :

Comment integrer la compilation dans mon editeur


Sujet :

avec Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut Comment integrer la compilation dans mon editeur
    slt à tous.

    j'ai un editeur de fichier .java et je voudrais lui donner aussi la faculté de compiler les fichiers qu'il ouvre.
    merci pour votre aide

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    Sur le meme principe que ce que je suis en train de faire, tu peux tenter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("javac fichier.java")
    Par contre, pour ce qui est de la transformation en jar, j'ai pas mal de soucis, voir mon post

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    dsl mais j'ai pas bien compris
    je voudrais plus d'explication si c'est possible
    comment faire pour qu'il compile le fichier qu'il ouvre

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    Bon, je suis pas un expert en Java, alors, il faudra peut etre passer mes propos a la verification d'un de ces derniers :

    Un fichier java ne contient que du texte. Pour rendre ce fichier executable par la java machine, il faut le "compiler" (Je prend des pincettes avec ces termes, parce qu'il parait que c'est pas vraiment de la compilation).
    Les EDI style Eclipse ou NetBean fournissent de quoi compiler tes fichiers et les executer sans que tu ais besoin d'y voir plus loin.
    Dans les faits averes, il faut dire a java de "compiler" les fichiers voulues. La commande n'est autre que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac nom_de_ton_fichier.java
    Ceci va alors te generer un fichier nom_de_ton_fichier.class executable par la java machine en utilisant la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java nom_de_ton_fichier.class
    Pour executer une commande system, Java propose dans sa classe RunTime une methode nommee exec() qui te permet de faire ca.

    Voila, je sais pas si je suis beaucoup plus clair, mais, je m'efforce !

  5. #5
    Membre expérimenté Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Salut,

    Si tu es en Java 1.6 regarde du coté du package .

    A+
    Hydraland

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    merci enormement pr votre aide je vais voir si je peux faire qlq chose ou pas

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai une question : Tu veux que ton éditeur de texte compile ton programme automatiquement ou bien tu veux compiler un programme Java à partir de ton programme ?

    Parce que si tu veux que ton éditeur de texte compile le code automatiquement, il va falloir que tu nous dise quel éditeur tu utilises... Déjà le bloc-notes Windows ne le fera pas. Si tu es sous Linux peut-être qu'il existe des plugins pour ton éditeur de texte (gedit en a la possibilité je crois...).
    Après comme dit plus haut il existe des "éditeurs" beaucoup plus complets du genre Eclipse ou NetBeans qui vont compiler automatiquement ton code et te permettre de l'exécuter facilement (plus tout un tas d'autres fonctionnalités). Et en plus ils sont gratuits.

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    c un editeur que je realise comme projet d'etude et je veux lui integrer la compilation si je clique sur un bouton + la compilation de tt les 15 secondes par exemple
    si y a des idées je suis preneur
    merci

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu peux soit passer par la Compiler API qui a été ajoutée à la sortie de java 6. Elle permet de faire un appel de façon programmatique au compilateur java.

    Plus d'infos au lien suivant: http://www.javabeat.net/articles/73-...ler-api-1.html


    Sinon tu peux également utiliser le compilateur eclipse (aka JDT Core) pour celà

    Les infos c'est par là: http://help.eclipse.org/help32/topic...t_int_core.htm

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par timboy11 Voir le message
    c un editeur que je realise comme projet d'etude et je veux lui integrer la compilation si je clique sur un bouton + la compilation de tt les 15 secondes par exemple
    si y a des idées je suis preneur
    merci
    Une idée : plutot que de compiler toutes les n secondes, tu pourrais pas ne compiler que si le fichier a changé (c'est ce que fait eclipse par exemple), ca évite de tout recompiler si rien n'a changé depuis la dernière fois (par exemple, compiler quand tu enregistres...)

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    c une bonne idée mais je suis pas à l'aise avec java si tu as un exemple je le veux b1 ou b1 des indications
    merci à tous pour votre aide

  12. #12
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je ne sais pas ce que fait ton éditeur, ni comment tu l'as codé, mais tu dois avoir un bouton ou une action pour enregistrer. Tu dois aussi avoir mis un flag qui indique si le fichier a changé depuis la dernière sauvegarde (si non c'est tout con à faire et très utile).
    A partir de ça tu peux par exemple
    • Lancer la compilation si à la demande de sauvegarde le flag indique des changement (tu enregistres et tu compile), si aucun changement n'est détecté tu ne fais rien (ni enregistrement (inutile), ni compilation (de même))
    • Lancer un trhead qui toutes les n secondes teste déjà grâce au flag si le fichier a été modifié avant de tenter de lancer la compilation, s'il ne l'a pas été le thread s'endort pour les n prochaines secondes, ça évite de recompiler du code identique
    • Utiliser des écouteurs sur les resources pour lancer le compilateur lorsqu'une ressource (un fichier java ici) est modifiée

    Eclipse marche ainsi, avec des écouteurs sur les resources en lançant ce qu'ils appellent des builders. Bref les possibilités sont nombreuses. le compilateur intégré à eclipse semble tout indiqué vu qu'il est incrémental (http://en.wikipedia.org/wiki/Incremental_compiler). Pour moi la solution d'eclipse (listener + compilateur incrémental) me semble la meilleure, mais faut la mettre en place
    Tu as eu des liens intéressant au dessus tu peux aller y faire un tour pour t'en inspirer

  13. #13
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    merci ce ce que je fais en ce moment,espérant que j'y arrive

    pour le compilation j'ai cree une methode mais ça marche pas,le temp.java se trouve dans workspace\tempfile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    package edit;
     
    public void compiler() {
     
    String fileToCompile = "edit" + java.io.File.separator +"tempfile\\temp.java";
           JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
           int compilationResult =    compiler.run(null, null, null, fileToCompile);
                   if(compilationResult == 0){
                       System.out.println("Compilation is successful");
                   }
                    else
                          {
                       System.out.println("Compilation Failed");
                   }
           }
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     private class GestionEvents implements ActionListener {
          public void actionPerformed(ActionEvent e) {
             if (boutons.getrun()== e.getSource())
                compiler();
     
            }
    la classe GestionEvents et dans le meme fichier java que la premiere classe "Editeur".
    si non est je prefere avoir la possibilité de compile le fichier qui est ouvert
    c mieux mais je sais pas comment m'y prendre.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Quand tu dis que ça marche pas ça veut dire quoi ? une erreur de compilation ? à l'exécution ? Donne nous ton erreur...
    Sinon pour compiler le fichier édité tu dois bien avoir quelque part une référence à ce fichier dans ton éditeur, avec son nom et chemin d'accès dans une chaine, ou alors un objet de type File qui te permet de savoir à l'exécution quel fichier est à compiler.
    Sinon j'ai des doutes là dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (boutons.getrun()== e.getSource())
    Si je ne m'abuse e.getSource() retourne un Object donc pour tester l'égalité il ne faut pas le == mais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (boutons.getrun().equals(e.getSource()))

  15. #15
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    j'ai resolu ce probleme de compilation,mais moi ce que je veux c aue mon editeur compile le fichier séléctionné,car avec ce que j'ai fais,il passe directement au fichier sur mon disque et par mon editeur
    private void compila() //throws IOException
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    { 
     
     
           String path = "C:\\workspace\\JEditeur\\Fichiers temporaires";
           String maClasse ="temp.java";
     
           String fileToCompile = path +java.io.File.separator +maClasse;
            JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
     
            if (compiler == null) 
            {
                throw new IllegalStateException(
                      "Java compiler est introuvable "
                      + "vérifier que votre class path cible tools.jar");}
     
             int compilationResult =    compiler.run(null,null,null, fileToCompile);
                  if(compilationResult == 0)
                  {     System.out.println("Compilation is successful"); }
        else {    System.out.println("Compilation Failed");         }
         }

  16. #16
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    je veux que la compilation soit dynamique c à dire le fichier ouvert,pas juste le temp.java qui ds mon code.y a qlq'un qui peut m'aider
    merci à vous

  17. #17
    Invité
    Invité(e)
    Par défaut
    Si tu veux que ca soit dynamique, comme je te l'qi dit il ne fqut pas coder en dur les valeurs de path et maCLasse.
    Tu dois bien avoir ces informations quelque part dans ton éditeur pour savoir quel fichier tu as ouvert, non ?

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

Discussions similaires

  1. [XL-2007] Comment integrer une condition dans mon code sendkey
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2012, 16h36
  2. [PHP-JS] Comment insérer du javascript dans mon php
    Par tioseb dans le forum Langage
    Réponses: 1
    Dernier message: 16/02/2006, 17h04
  3. Réponses: 13
    Dernier message: 26/08/2005, 16h34
  4. [TP] Comment activer la souris dans l'éditeur ?
    Par hannon dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 27/03/2005, 00h29
  5. Integrer une musique dans mon programme
    Par Tutux84 dans le forum C
    Réponses: 2
    Dernier message: 29/01/2005, 12h41

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