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

Langage Java Discussion :

Créer une classe .java avec un code java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut Créer une classe .java avec un code java
    Bonjour tout le monde,

    Je voulais pouvoir générer une classe java à l'aide d'un code écrit en java. J'ai alors trouvé un API antlr-2.7.5 et JAVACodeGenST qu'un ami m'a donné. Seulement il n'y a pas de tuto. Je suis quand même arrivé à générer les class et à mettre des instructions dedans.

    Ce que je n'arrive pas c'est de mettre des choses comme extends unclasse, ou encore générer une interface au lieu d'une class.

    Quelqu'un a t il une idée ou d'autres APIs plus simples.

    merci et bonne année 2008.

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    et bien tu as javac pour compiler et creer ta classe.

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 680
    Par défaut
    Je ne suis pas sur d'avoir compris ta question. Tu souhaite compiler une fichier ".java" en fichier ".class" tout comme le fait javac depuis un programme java? C'est pour quel usage?

    Je ne connais pas l'API que tu cite mais, il y a (seulement depuis java SE 6.0 il me semble) dans l'API standard des outils pour faire de la compilation JAVA depuis un autre programme JAVA dans le package javax.tools.
    Sinon il y a aussi la possibilité de faire un Runtime.exec("javac MonFichier.java");

    Tout dépends de tes besoins, je ne suis pas sur que tu ais assez clairement explicité on problème pour donner une réponse plus précise

  4. #4
    azr
    azr est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Par défaut
    Moi non plus je ne sais pas si je t'ai bien compris.. Pour moi tu veux générer un fichier .java à partir d'un autre .java
    Si c'est bien ça, tout dépend de la complexité de l'implémentation que tu as à générer, mais pourquoi pas ne pas utiliser juste un petit StringBuffer?

    Cela te donne la possibilité de créer interfaces ou classes selon les besoins.
    Après c'est sûr qu'il doit y avoir plus élégant

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Es-tu sur de vouloir te lancer dans la génération dynamique de code ? Est-ce "pour le fun" ou alors pour un réel besoin ?

    Parfois, il suffit de se créer un micro langage, de "cabler" une grammaire (c'est-à-dire coder en dur les méthodes qui reflètent les différentes parties).

    Et attention aux performances : la compilation dynamique prend du temps. De plus, les compilateurs n'acceptent qu'un fichier, et pas de flux. Donc générer le code, écrire le fichier, le compiler puis l'exécuter : c'est long. De plus, selon la complexité, générer du code peut potentiellement entraîner énormément d'erreurs. De plus, il n'est pas possible de gérer différentes version d'une class dans une JVM. Une fois compilée et utilisée, c'est trop tard pour la modifier !

    Vérifie d'abord (mais j'imagine que c'est déjà fait) si tu as réellement besoin de la compilation dynamique.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut
    Bonjour tout le monde,

    Je voix bien qu'on m'a pas compris. Voici un exemple de code java qui générè un fichier .java.
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    package classe;
     
    import java.io.File;
    import java.io.*;
     
    import org.antlr.stringtemplate.*;
    import javacodegenst.*;
     
    public class MaClasse {
     
    	public static void main (String [] args){
    		String nom="UneClasse";
     
    		StringTemplateGroup stcodeS=STGClass.main();
    		StringTemplate classService=stcodeS.getInstanceOf("class");
    		classService.setAttribute("package","classe"); // crée le package
    		classService.setAttribute("name",nom); // attribue le nom de la classe, donc du fichier .java
    		classService.setAttribute("ext",""); // ajoute le mot clé "Implements"
    		classService.setAttribute("nomS","Runable"); // ajoute Runable
     
    		classService.setAttribute("methods.{returnType,name,param,body}","" ,nom,"","");
     
    		StringTemplate classCorp=stcodeS.getInstanceOf("corps"); // crée le corps du programme
    		String s="String version="+"\"version 1.0 \"";
    		classCorp.setAttribute("statements", s+";\n"+"System.out.println("+"version"+");"+"\n"); // ajoute une instruction
    		classService.setAttribute("methods.{returnType,name,param,body}","void" ,"run","",classCorp); // crée la méthode run() du Thread
     
    		try {
    			String pack="classe";
    			nom=nom.substring(0,1).toUpperCase()+nom.substring(1,nom.length());
    			  File f=new File("c:\\cwsjava\\"+pack);
    			f.mkdir();
     
     
    			f=new File("c:\\cwsjava\\"+pack+"\\"+nom+".java");
    			  f.createNewFile();
    			  FileWriter fw=new FileWriter(f);
    			  fw.write(classService.toString()); // écrit le contenu dans le fichier physique  créé
    			fw.close(); 
    		}
    		catch (IOException ex) {ex.printStackTrace(System.out);}
    	}
    }
    Ce code crée dans le dossier c:\cwsjava\nomduPackage le fichier UneClasse.java

    Je ne suis pas du tout surpris de vos réponses, car je galère dessus depuis 4 mois et rien de potable.

    Ce travaille est une partie de mon mémoire de thèse, raison pour laquelle je voulais vraiment une réponse. Sans quoi, mon Directeur de thèse veut arrêter de continuer avec moi.

    Mon problème c'est que je n'arrive plus à avoir les dits APIs pour plus de detail. Si vous voulez, je pourais vous envoyer les copies des APIs.

    Merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/08/2014, 11h38
  2. créer une routine d'installation pour appli java avec netbeans
    Par dummygreg dans le forum NetBeans Platform
    Réponses: 3
    Dernier message: 23/07/2009, 23h12
  3. Ecrire une page web avec du code Java.
    Par tsikpemoise dans le forum JSF
    Réponses: 2
    Dernier message: 07/11/2008, 08h45
  4. imprimer une page word avec de code java
    Par AmineDev9 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 21/09/2008, 20h38

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