示例#1
0
 /**
  * Mécanisme de compilation du fichier Jvs.
  *
  * @param program Le code à compiler
  * @return La valeur true si la compilation est ok, false sinon.
  */
 public boolean doCompile(String program) {
   doStop();
   // Traduction Jvs -> Java puis Java -> Class et chargement de la classe
   // si succès
   Jvs2Java jvs2java = new Jvs2Java();
   if (getProglet() != null) {
     jvs2java.setProgletTranslator(getProglet().getTranslator());
     jvs2java.setProgletPackageName(
         getProglet().hasFunctions() ? "org.javascool.proglets." + getProglet().getName() : null);
   }
   String javaCode = jvs2java.translate(program);
   // Creation d'un répertoire temporaire
   String javaFile;
   try {
     File buildDir = FileManager.createTempDir("javac");
     javaFile = buildDir + File.separator + jvs2java.getClassName() + ".java";
     FileManager.save(javaFile, javaCode);
     // Si il y a un problème avec le répertoire temporaire on se rabat
     // sur le répertoire local
   } catch (Exception e1) {
     try {
       javaFile = new File(jvs2java.getClassName() + ".java").getAbsolutePath();
       System.err.println("Sauvegarde locale du fichier : " + javaFile);
       FileManager.save(javaFile, javaCode);
       // Sinon on signale le problème à l'utilisateur
     } catch (Exception e2) {
       System.out.println(
           "Attention ! le répertoire '"
               + System.getProperty("user.dir")
               + "' ne peut être utilisé pour sauver des fichiers, \n il faut re-lancer javascool dans un répertoire de travail approprié.");
       return false;
     }
   }
   if (Java2Class.compile(javaFile)) {
     try {
       runnable = Java2Class.load(javaFile);
       return true;
     } catch (Exception e3) {
       System.out.println(
           "Attention ! il y a eu une action externe de netoyyage de fichiers temporraires ou le répertoire '"
               + new File(javaFile).getParent()
               + "' ne peut être utilisé pour sauver des fichiers, \n il faut re-lancer javascool dans un répertoire de travail approprié.");
       return false;
     }
   } else {
     runnable = null;
     return false;
   }
 }