Class JavaSourceClassLoader


  • public class JavaSourceClassLoader
    extends AbstractJavaSourceClassLoader
    A ClassLoader that loads classes by looking for their source files through a 'source path' and compiling them on-the-fly.
    • Field Detail

      • sourcePath

        private java.io.File[] sourcePath
      • optionalCharacterEncoding

        private java.lang.String optionalCharacterEncoding
      • debuggingInfoLines

        private boolean debuggingInfoLines
      • debuggingInfoVars

        private boolean debuggingInfoVars
      • debuggingInfoSource

        private boolean debuggingInfoSource
      • compilerOptions

        private java.util.Collection<java.lang.String> compilerOptions
      • compiler

        private javax.tools.JavaCompiler compiler
      • fileManager

        private javax.tools.JavaFileManager fileManager
    • Method Detail

      • init

        private void init()
      • getJavaFileManager

        javax.tools.JavaFileManager getJavaFileManager()
        Creates the underlying JavaFileManager lazily, because setSourcePath(File[]) and consorts are called after initialization.
      • setSourcePath

        public void setSourcePath​(java.io.File[] sourcePath)
        Specified by:
        setSourcePath in class AbstractJavaSourceClassLoader
        Parameters:
        sourcePath - The sequence of directories to search for Java™ source files
      • setDebuggingInfo

        public void setDebuggingInfo​(boolean lines,
                                     boolean vars,
                                     boolean source)
        Specified by:
        setDebuggingInfo in class AbstractJavaSourceClassLoader
        Parameters:
        lines - Whether line number debugging information should be generated
        vars - Whether variables debugging information should be generated
        source - Whether source file debugging information should be generated
      • setCompilerOptions

        public void setCompilerOptions​(java.lang.String[] compilerOptions)
        Notice: Don't use the '-g' options - these are controlled through setDebuggingInfo(boolean, boolean, boolean).
        Parameters:
        compilerOptions - All command line options supported by the JDK JAVAC tool
      • findClass

        protected java.lang.Class<?> findClass​(java.lang.String className)
                                        throws java.lang.ClassNotFoundException
        Implementation of ClassLoader.findClass(String).
        Overrides:
        findClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • getSourceResourceName

        private static java.lang.String getSourceResourceName​(java.lang.String className)
        Construct the name of a resource that could contain the source code of the class with the given name.

        Notice that member types are declared inside a different type, so the relevant source file is that of the outermost declaring class.

        Parameters:
        className - Fully qualified class name, e.g. "pkg1.pkg2.Outer$Inner"
        Returns:
        the name of the resource, e.g. "pkg1/pkg2/Outer.java"