Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.io.PrintWriter;
- import com.sun.tools.javac.Main;
- public class JavacPP
- {
- private static int classCount = 0;
- static
- {
- Logger l = new Logger(System.out);
- System.setOut(l);
- System.setErr(l);
- }
- public static void main(String[] args)
- {
- System.out.println("starting javac++");
- System.out.println("by blakeman8192\n");
- if (args.length != 3)
- {
- System.err.println("invalid arguments!");
- System.err.println("usage: <srcdir> <libdir> <destdir>");
- System.err.println("where <srcdir> is the source directory, and <destdir> is the destination directory.");
- return;
- }
- File srcDir = new File(args[0]);
- File libDir = new File(args[1]);
- File outDir = new File(args[2]);
- if (!srcDir.exists())
- {
- System.err.println("source directory " + srcDir.getPath() + " does not exist!");
- return;
- }
- if (!outDir.exists())
- {
- System.out.println("creating output folder: " + outDir.getPath());
- outDir.mkdir();
- }
- long startTime = System.currentTimeMillis();
- String sourcePath = buildSourcepath(srcDir);
- compile(sourcePath, srcDir, libDir, outDir);
- long elapsedTime = System.currentTimeMillis() - startTime;
- System.out.println("compiled " + classCount + " classes in " + elapsedTime + "ms");
- System.out.println("compilation complete.");
- }
- private static void compile(String sourcePath, File srcDir, File libDir, File outDir)
- {
- String args = "-d " + outDir.getPath() + " -cp " + buildLibFiles(libDir) + " -sourcepath " + sourcePath + " " + buildSourceFiles(srcDir);
- System.out.println("build arguments: \n\t" + args);
- System.out.println("compiling...");
- System.out.println("----------------------------------------");
- Main.compile(args.split(" "), new PrintWriter(System.out));
- }
- private static String buildSourcepath(File srcDir)
- {
- StringBuilder bldr = new StringBuilder();
- bldr.append(srcDir.getPath() + ";");
- for (File child : srcDir.listFiles())
- {
- if (child.isDirectory())
- {
- bldr.append(buildSourcepath(child));
- }
- }
- return bldr.toString();
- }
- private static String buildLibFiles(File libDir)
- {
- if (!libDir.exists())
- return ".";
- StringBuilder bldr = new StringBuilder();
- bldr.append(libDir.getPath() + ";");
- for (File child : libDir.listFiles())
- {
- if (child.getName().endsWith(".jar"))
- {
- bldr.append(child.getPath() + ";");
- }
- }
- return bldr.toString();
- }
- private static String buildSourceFiles(File srcDir)
- {
- StringBuilder bldr = new StringBuilder();
- for (File child : srcDir.listFiles())
- {
- if (child.isDirectory())
- {
- bldr.append(buildSourceFiles(child));
- } else
- {
- classCount++;
- bldr.append(child.getPath() + " ");
- }
- }
- return bldr.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment