Class JavaSourceClassLoader
- java.lang.Object
-
- java.lang.ClassLoader
-
- org.codehaus.commons.compiler.AbstractJavaSourceClassLoader
-
- org.codehaus.commons.compiler.jdk.JavaSourceClassLoader
-
public class JavaSourceClassLoader extends AbstractJavaSourceClassLoader
AClassLoaderthat loads classes by looking for their source files through a "source path" and compiling them on-the-fly.Notice that this class loader does not support resoures in the sense of
ClassLoader.getResource(String),ClassLoader.getResourceAsStream(String)ndClassLoader.getResources(String).- See Also:
ClassLoaders
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classJavaSourceClassLoader.DiagnosticExceptionContainer for aDiagnosticobject.-
Nested classes/interfaces inherited from class org.codehaus.commons.compiler.AbstractJavaSourceClassLoader
AbstractJavaSourceClassLoader.ProtectionDomainFactory
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Collection<java.lang.String>compilerOptionsprivate booleandebuggingInfoLinesprivate booleandebuggingInfoSourceprivate booleandebuggingInfoVarsprivate javax.tools.JavaFileManagerfileManagerprivate java.nio.charset.CharsetsourceCharsetprivate ResourceFindersourceFinderprivate static javax.tools.JavaCompilerSYSTEM_JAVA_COMPILER-
Fields inherited from class org.codehaus.commons.compiler.AbstractJavaSourceClassLoader
protectionDomainFactory
-
-
Constructor Summary
Constructors Constructor Description JavaSourceClassLoader()JavaSourceClassLoader(java.lang.ClassLoader parentClassLoader)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.Class<?>findClass(java.lang.String className)Implementation ofClassLoader.findClass(String).private java.lang.Class<?>findClass2(java.lang.String className)private javax.tools.JavaFileObjectfindClassFile(java.lang.String className)private javax.tools.JavaFileManagergetJavaFileManager()Creates the underlyingJavaFileManagerlazily, becausesetSourcePath(File[])and consorts are called after initialization.private static java.lang.StringgetSourceResourceName(java.lang.String className)Constructs the name of a resource that could contain the source code of the class with the given name.private static javax.tools.JavaCompilergetSystemJavaCompiler()private voidinit()voidsetCompilerOptions(java.lang.String[] compilerOptions)Notice: Don't use the '-g' options - these are controlled throughsetDebuggingInfo(boolean, boolean, boolean).voidsetDebuggingInfo(boolean lines, boolean vars, boolean source)voidsetSourceCharset(java.nio.charset.Charset charset)voidsetSourceFinder(ResourceFinder sourceFinder)voidsetSourcePath(java.io.File[] sourcePath)-
Methods inherited from class org.codehaus.commons.compiler.AbstractJavaSourceClassLoader
getResourceAsStream, main, setProtectionDomainFactory, setSourceFileCharacterEncoding
-
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
-
-
-
Field Detail
-
SYSTEM_JAVA_COMPILER
private static final javax.tools.JavaCompiler SYSTEM_JAVA_COMPILER
-
sourceFinder
private ResourceFinder sourceFinder
-
sourceCharset
private java.nio.charset.Charset sourceCharset
-
debuggingInfoLines
private boolean debuggingInfoLines
-
debuggingInfoVars
private boolean debuggingInfoVars
-
debuggingInfoSource
private boolean debuggingInfoSource
-
compilerOptions
private java.util.Collection<java.lang.String> compilerOptions
-
fileManager
@Nullable private javax.tools.JavaFileManager fileManager
-
-
Method Detail
-
getSystemJavaCompiler
private static javax.tools.JavaCompiler getSystemJavaCompiler()
-
init
private void init()
-
getJavaFileManager
private javax.tools.JavaFileManager getJavaFileManager()
Creates the underlyingJavaFileManagerlazily, becausesetSourcePath(File[])and consorts are called after initialization.
-
setSourcePath
public void setSourcePath(java.io.File[] sourcePath)
- Specified by:
setSourcePathin classAbstractJavaSourceClassLoader- Parameters:
sourcePath- The sequence of directories to search for Java source files
-
setSourceFinder
public void setSourceFinder(ResourceFinder sourceFinder)
- Specified by:
setSourceFinderin classAbstractJavaSourceClassLoader- Parameters:
sourceFinder- Is used when searching for Java source files
-
setSourceCharset
public void setSourceCharset(java.nio.charset.Charset charset)
- Specified by:
setSourceCharsetin classAbstractJavaSourceClassLoader- Parameters:
charset- The character set to using when reading characters from a source file
-
setDebuggingInfo
public void setDebuggingInfo(boolean lines, boolean vars, boolean source)- Specified by:
setDebuggingInfoin classAbstractJavaSourceClassLoader- Parameters:
lines- Whether line number debugging information should be generatedvars- Whether variables debugging information should be generatedsource- 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 throughsetDebuggingInfo(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.ClassNotFoundExceptionImplementation ofClassLoader.findClass(String).- Overrides:
findClassin classjava.lang.ClassLoader- Throws:
java.lang.ClassNotFoundException
-
findClass2
private java.lang.Class<?> findClass2(java.lang.String className) throws java.io.IOException- Throws:
java.io.IOException
-
findClassFile
private javax.tools.JavaFileObject findClassFile(java.lang.String className) throws java.io.IOException- Throws:
java.io.IOException
-
getSourceResourceName
private static java.lang.String getSourceResourceName(java.lang.String className)
Constructs 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"
-
-