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
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
Sur le meme principe que ce que je suis en train de faire, tu peux tenter :
Par contre, pour ce qui est de la transformation en jar, j'ai pas mal de soucis, voir mon post
Code : Sélectionner tout - Visualiser dans une fenêtre à part Runtime.getRuntime().exec("javac fichier.java")
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
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
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 javac nom_de_ton_fichier.java
Pour executer une commande system, Java propose dans sa classe RunTime une methode nommee exec() qui te permet de faire ca.
Code : Sélectionner tout - Visualiser dans une fenêtre à part java nom_de_ton_fichier.class
Voila, je sais pas si je suis beaucoup plus clair, mais, je m'efforce !
Salut,
Si tu es en Java 1.6 regarde du coté du package.
Code : Sélectionner tout - Visualiser dans une fenêtre à part javax.tools
A+
Hydraland
merci enormement pr votre aide je vais voir si je peux faire qlq chose ou pas
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.
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
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
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
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![]()
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:
puis
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"); } }
la classe GestionEvents et dans le meme fichier java que la premiere classe "Editeur".
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(); }
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.
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 :
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()== e.getSource())
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if (boutons.getrun().equals(e.getSource()))
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"); } }
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
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 ?
Partager