예제 #1
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);
   }
 }
예제 #2
0
 private ProgletEngine() {
   String javascoolJar = Core.javascoolJar();
   // Détection des proglets présentes dans le jar
   try {
     proglets = new ArrayList<Proglet>();
     for (String dir :
         FileManager.list(javascoolJar, "org.javascool.proglets.[^\\.]+.proglet.pml")) {
       String name = dir.replaceFirst("jar:[^!]*!(.*)proglet.pml", "$1");
       try {
         Proglet proglet = new Proglet().load(name);
         proglets.add(proglet);
       } catch (Exception e) {
         System.err.println(
             "Erreur lors de la détection dans le jar de la proglet "
                 + name
                 + " en "
                 + dir
                 + " ("
                 + e
                 + ")");
       }
     }
   } catch (Exception er) {
     System.err.println(
         "Erreur lors de la détection des proglets ("
             + er
             + " avec "
             + javascoolJar
             + "\n . . vous pouvez quand même utiliser JavaScool");
   }
   // Définit une proglet "vide" pour lancer l'interface
   if (proglets.isEmpty()) {
     for (int i = 0; i < 1; i++) {
       Proglet p = new Proglet();
       p.pml.set("name", "Interface");
       p.pml.set("icon-location", "org/javascool/widgets/icons/scripts.png");
       p.pml.set("help-location", "org/javascool/macros/memo-macros.htm");
       proglets.add(p);
     }
   }
   // Tri des proglets par ordre alphabétique
   Collections.sort(
       proglets,
       new Comparator<Proglet>() {
         @Override
         public int compare(Proglet p1, Proglet p2) {
           return p1.getName().compareTo(p2.getName());
         }
       });
 }