Lancer des fichiers java externes au programme

Lancer des fichiers java externes au programme - Java - Programmation

Marsh Posté le 06-05-2008 à 10:32:41    

Bonjour, depuis mon programme principal, je souhaite pour lancer un fichier Main.java et Universe.java qui se trouve dans un dossier du programme (chemin: .//generated/Main.java et .//generated/Universe.java). Le Main.java instancie Universe et rend la fenêtre visible:  

Code :
  1. public static void main(String[] args) {
  2.         // TODO code application logic here
  3.         Universe myUniverse = new Universe();
  4.         myUniverse.setSize(900,900);
  5.         myUniverse.setVisible(true);
  6. }


 
et c'est l'Universe qui va afficher une scène 3D.
 
 
Dans mon programme principal, j'ai une méthode ApercuButtonMouseClicked() et je souhaite lancé mes fichiers java à partir de là. J'ai essayé quelque chose comme ça avec des process, sans résultat:

Code :
  1. private void ApercuButtonMouseClicked(java.awt.event.MouseEvent evt) {                                       
  2.         try {
  3.             Process proc1 = Runtime.getRuntime().exec("javac .//generated/Main.java" );
  4.             Process proc2 = Runtime.getRuntime().exec("javac .//generated/Universe.java" );
  5.             Process proc3 = Runtime.getRuntime().exec("java Main" );
  6.             Process proc4 = Runtime.getRuntime().exec("java Universe" );
  7.         } catch (IOException e) {
  8.             System.out.println("catch!" );
  9.         }
  10. }

Reply

Marsh Posté le 06-05-2008 à 10:32:41   

Reply

Marsh Posté le 08-05-2008 à 23:46:53    

Avec Java 1.6
 
Fait une interface pour tes fichier generé qui sera déjà compilé.
interface IMain
interface IUniverse
 
Compile ta class a l'aide de javax.tools.JavaCompiler
Aide : http://mindprod.com/jgloss/javacompiler.html
 
private static boolean compile( JavaFileObject... source )
        {
        final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
 
        final JavaCompiler.CompilationTask task = compiler.getTask( null
                /* default System.err */,
                null
                /* standard file manager,
          If we wrote our own we could control the location
          of the generated  class files. */,
                null
                /* standard DiagnosticListener */,
                null
                /* no options */,
                null
                /* no annotation classes */,
                // we must convert JavaFileObject... to Iterable<? extends JavaFileObject>
                Arrays.asList( source )
                /* source code */ );
        return task.call();
        }
 
-------------------
Ensuite crée une instance de ta classe compilé :
IUniverse universe =
                ( IUniverse ) ClassLoader.getSystemClassLoader().loadClass("Universe" )
Et call la fonction souhaité
universe.destroy!!!
 
 

Reply

Sujets relatifs:

Leave a Replay

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