[Java][RESOLU] Compilation en cours d'execution

Compilation en cours d'execution [Java][RESOLU] - Java - Programmation

Marsh Posté le 13-02-2003 à 10:24:09    

Le titre est pas très clair, mais je vais essayer d'expliquer mon probleme. Je suis sur un programme (en java) qui doit génerer du code en java aussi. Jusque la, tout va bien. Seulement, j'ai besoin de pouvoir utiliser le code géneré dans la suite de la génération.
 
Charger un classe, l'instancier, pas de probleme. Mais pour cela, il me faut le byte code. Alors évidement, je pourrais lancer un processus externe pour compiler, mais c'est pas très beau.
 
J'ai un peu regardé l'api de jasper (utilisé par tomcat pour compiler les jsp), mais bon... Ils se basent forcément sur quelque chose d'existant  [:sinclaire]  
 
une piste, quelqu'un ?


Message édité par lorill le 14-02-2003 à 11:24:42
Reply

Marsh Posté le 13-02-2003 à 10:24:09   

Reply

Marsh Posté le 13-02-2003 à 10:52:29    

bon, apres avoir maté les sources de jasper, ils utilisent ant.
j'ai pas envie, moi :o

Reply

Marsh Posté le 13-02-2003 à 10:53:01    

java.lang.Compiler ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-02-2003 à 10:56:38    

rho ben oui tiens...
le probleme de machins de ce genre c'est que quand on dégaine google il sort tous les messages de mecs qui savent pas compiler, mais ca faut le connaitre pour le trouver.
 
je vais voir si ca marche

Reply

Marsh Posté le 13-02-2003 à 11:08:05    

ah ben non, c'est pas ca du tout.
 

Citation :


The Compiler class is provided to support Java-to-native-code compilers and related services. By design, the Compiler class does nothing; it serves as a placeholder for a JIT compiler implementation.
 
When the Java Virtual Machine first starts, it determines if the system property java.compiler exists. (System properties are accessible through getProperty and , a method defined by the System class.) If so, it is assumed to be the name of a library (with a platform-dependent exact location and type); the loadLibrary method in class System is called to load that library. If this loading succeeds, the function named java_lang_Compiler_start() in that library is called.
 
If no compiler is available, these methods do nothing.  

Reply

Marsh Posté le 13-02-2003 à 11:09:18    

lorill a écrit :

bon, apres avoir maté les sources de jasper, ils utilisent ant.


 
Et avec ant, comment ils font pour traiter un tag <javac> ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-02-2003 à 11:10:03    

kadreg a écrit :


Et avec ant, comment ils font pour traiter un tag <javac> ?


j'ai pas encore eu le courage de regarder  :whistle:

Reply

Marsh Posté le 13-02-2003 à 11:12:40    

j'ai lu un truc y a pas longtemps la dessus ... je reviens !

Reply

Marsh Posté le 13-02-2003 à 11:15:22    

Reply

Marsh Posté le 13-02-2003 à 11:17:42    

merci, je vais voir

Reply

Marsh Posté le 13-02-2003 à 11:17:42   

Reply

Marsh Posté le 13-02-2003 à 11:43:28    

ant c'est bien :o  
 
 [:tapai]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 13-02-2003 à 11:44:29    

DarkLord a écrit :

ant c'est bien :o  


 
antp, c'est mieux


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-02-2003 à 12:42:30    

kadreg a écrit :


 
Et avec ant, comment ils font pour traiter un tag <javac> ?


Ils font comme ils disent dans le JavaTip 131 : ils exécutent com.sun.tools.javac.Main.compile(). Mais évidemment, c'est non documenté par Sun...

Reply

Marsh Posté le 13-02-2003 à 13:23:29    

bon, j'ai l'impression que le -sourcepath est pas pris en compte :heink:
 
en ligne de commande non plus d'ailleurs

Reply

Marsh Posté le 14-02-2003 à 10:37:25    

lorill a écrit :

bon, j'ai l'impression que le -sourcepath est pas pris en compte :heink:
 
en ligne de commande non plus d'ailleurs


 
dans ant tu veux dire?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 10:41:09    

DarkLord a écrit :


dans ant tu veux dire?


non, dans com.sun.tools.javac.Main
mais en fait j'ai contourné mon probleme, ca rox maintenant

Reply

Marsh Posté le 14-02-2003 à 11:00:27    

javaworld c'est quand même vachement bien !

Reply

Marsh Posté le 14-02-2003 à 11:26:07    

lorill a écrit :


non, dans com.sun.tools.javac.Main
mais en fait j'ai contourné mon probleme, ca rox maintenant


Et tu as fait quoi (et comment)?
Ps c'est pour mourir moins idiot ...

Reply

Marsh Posté le 14-02-2003 à 11:29:03    

western a écrit :


Et tu as fait quoi (et comment)?
Ps c'est pour mourir moins idiot ...


ben tout comme dans l'article de benou.
 

Code :
  1. public int compile(String classpath, String sourcepath)
  2.     {
  3.         com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
  4.         String [] args = {
  5.             "-d", sourcepath,
  6.             "-classpath", classpath,
  7.             sourcepath + this.screen.getName() + "Screen.java"
  8.         };
  9.        
  10.         return javac.compile(args);       
  11.     }

Reply

Marsh Posté le 14-02-2003 à 12:38:32    

Ok, merci (j'ai juste survolé l'article)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed