var data = {};
var defaultCompiler = "com.sun.tools.javac.api.JavacTool";
//we have to manually go looking for the compiler
try
{
data.compiler = getPageContext().getClass().getClassLoader().loadClass(defaultCompiler).newInstance();
}
catch(any exc)
{
println("Error loading compiler:");
println(exc.toString());
}
/*
If not by THIS point do we have a compiler, then throw an exception
*/
if(NOT StructKeyExists(data, "compiler"))
{
throwException("javaCompiler.NoCompilerAvailableException",
"No Java Compiler is available",
"There is no Java Compiler available. Make sure tools.jar is in your classpath and you are running Java 1.6+");
}
setCompiler(data.compiler);
setJarDirectory(arguments.jarDirectory);
return this;
//setup file manager with default exception handler, default locale, and default character set
var fileManager = getCompiler().getStandardFileManager(JavaCast("null", ""), JavaCast("null", ""), JavaCast("null", ""));
var qFiles = 0;
var fileArray = [];
var directoryToCompile = 0;
var fileObjects = 0;
var osw = createObject("java", "java.io.StringWriter").init();
var options = [];
var compilePass = 0;
var jarPath = getJarDirectory() & "/" & arguments.jarName;
ArrayAppend(fileArray, qFiles.directory & "/" & qFiles.name);
if(structKeyExists(arguments, "classLoader"))
{
options = addClassLoaderFiles(options, arguments.classLoader, arguments.directoryArray);
}
fileObjects = fileManager.getJavaFileObjectsFromStrings(fileArray);
//does the compilation
compilePass = getCompiler().getTask(osw, fileManager, JavaCast("null", ""), options, JavaCast("null", ""), fileObjects).call();
if(NOT compilePass)
{
throwException("javacompiler.SourceCompilationException", "There was an error compiling your source code", osw.toString());
}
var urls = 0;
var uri = 0;
var classPaths = createObject("java", "java.lang.StringBuilder").init();
var File = createObject("java", "java.io.File");
var path = 0;
classPaths.append(uri.getFile()).append(File.pathSeparator);
ArrayAppend(arguments.options, "-classpath");
ArrayAppend(arguments.options, classPaths.toString());
return arguments.options;
createObject("Java", "java.lang.System").out.println(arguments.str);