/**
  * 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;
   }
 }
Exemple #2
0
 /** @see #compile(String, String, String, boolean) */
 public static boolean compile(
     String jarFile, String mainClass, String javaFiles[], boolean allErrors) {
   try {
     String buildDir = ".build";
     JarManager.rmDir(new File(buildDir));
     new File(buildDir).mkdirs();
     JarManager.jarExtract(Core.javascoolJar(), buildDir, "org/javascool");
     for (int i = 0; i < javaFiles.length; i++) {
       String file = javaFiles[i];
       javaFiles[i] = buildDir + File.separator + file;
       JarManager.copyFiles(file, javaFiles[i]);
     }
     if (!Java2Class.compile(javaFiles, allErrors)) {
       return false;
     }
     String mfFile = buildDir + File.separator + "manifest.jmf";
     Pml manifest =
         new Pml()
             .set("Main-Class", mainClass)
             .set("Implementation-URL", "http://javascool.gforge.inria.fr")
             .save(mfFile);
     JarManager.jarCreate(jarFile, mfFile, buildDir);
     JarManager.rmDir(new File(buildDir));
     return true;
   } catch (IOException e) {
     throw new RuntimeException("Erreur d'entrées-sorties à la compilation : " + e);
   }
 }