Class JDTJavaCompiler

  • All Implemented Interfaces:
    JavaCompiler

    public class JDTJavaCompiler
    extends java.lang.Object
    implements JavaCompiler
    JDT class compiler. This compiler will load source dependencies from the context classloader, reducing dramatically disk access during the compilation process.
    • Field Detail

      • settings

        private final java.util.Map settings
      • log

        private java.util.logging.Logger log
      • javaFileName

        private java.lang.String javaFileName
      • USE_INTROSPECTION_TO_INVOKE_GET_PROBLEM

        private static boolean USE_INTROSPECTION_TO_INVOKE_GET_PROBLEM
      • GET_PROBLEM_METH

        private static java.lang.reflect.Method GET_PROBLEM_METH
    • Constructor Detail

      • JDTJavaCompiler

        public JDTJavaCompiler()
    • Method Detail

      • release

        public void release()
        Description copied from interface: JavaCompiler
        Release resouces used in the current compilation
        Specified by:
        release in interface JavaCompiler
      • setExtdirs

        public void setExtdirs​(java.lang.String exts)
        Specified by:
        setExtdirs in interface JavaCompiler
      • setClassPath

        public void setClassPath​(java.util.List<java.io.File> cpath)
        Description copied from interface: JavaCompiler
        Java Compiler options.
        Specified by:
        setClassPath in interface JavaCompiler
      • getJavaWriter

        public java.io.Writer getJavaWriter​(java.lang.String javaFileName,
                                            java.lang.String javaEncoding)
                                     throws JasperException
        Description copied from interface: JavaCompiler
        Get a Writer for the Java file. The writer is used by JSP compiler. This method allows the Java compiler control where the Java file should be generated so it knows how to handle the input for java compilation accordingly.
        Specified by:
        getJavaWriter in interface JavaCompiler
        Throws:
        JasperException
      • setDebug

        public void setDebug​(boolean debug)
        Specified by:
        setDebug in interface JavaCompiler
      • setSourceVM

        public void setSourceVM​(java.lang.String sourceVM)
        Specified by:
        setSourceVM in interface JavaCompiler
      • setTargetVM

        public void setTargetVM​(java.lang.String targetVM)
        Specified by:
        setTargetVM in interface JavaCompiler
      • saveClassFile

        public void saveClassFile​(java.lang.String className,
                                  java.lang.String classFileName)
        Description copied from interface: JavaCompiler
        Save the generated class file to disk, if not already done.
        Specified by:
        saveClassFile in interface JavaCompiler
      • doJavaFile

        public void doJavaFile​(boolean keep)
        Description copied from interface: JavaCompiler
        Remove/save the generated Java File from/to disk
        Specified by:
        doJavaFile in interface JavaCompiler
      • safeGetProblems

        private static final org.eclipse.jdt.core.compiler.IProblem[] safeGetProblems​(org.eclipse.jdt.internal.compiler.CompilationResult result)
        Invoke CompilationResult#getProblems safely so that it works with 3.1.1 and more recent versions of the eclipse java compiler. See https://jsp.dev.java.net/issues/show_bug.cgi?id=13
        Parameters:
        result - The compilation result.
        Returns:
        The same object than CompilationResult#getProblems