com.javageeks.classloader
Class CompilerClassLoader

java.lang.Object
  |
  +--java.lang.ClassLoader
        |
        +--com.javageeks.classloader.CompilerClassLoader
All Implemented Interfaces:
ClassLoaderStrategy, java.io.Serializable

public class CompilerClassLoader
extends java.lang.ClassLoader
implements ClassLoaderStrategy

CompilerClassLoader

Note:If this class fails to compile with the error message "Class sun.tools.javac.Main not found", then you need to put the "tools.jar" file on the CLASSPATH either in the environment, or explicitly on the command-line to the compiler:

 javac -classpath $(JDKROOT)/lib/tools.jar <.java files>
 

Dropping the tools.jar file into the Extensions directory is discouraged, as some tools (like RMI-IIOP's rmic.exe) will have problems picking out the right Java classes to execute, since the Extensions are always ahead of any other classes on a CLASSPATH.

See Also:
Serialized Form

Constructor Summary
CompilerClassLoader()
          Uses "user.home" as root dir to work from
CompilerClassLoader(java.lang.ClassLoader parent)
           
CompilerClassLoader(java.io.File sourceDirRoot)
           
CompilerClassLoader(java.io.File sourceDirRoot, java.lang.ClassLoader parent)
           
 
Method Summary
protected  java.lang.Class findClass(java.lang.String name)
          Retrieve compiled code
 byte[] findClassBytes(java.lang.String name)
          Return byte array (which will be turned into a Class instance via ClassLoader.defineClass) for class
 java.lang.String findLibraryPath(java.lang.String libraryName)
          Return full path to native library given by the name libraryName.
 java.util.Enumeration findResourcesEnum(java.lang.String resourceName)
          Return Enumeration of resources corresponding to resourceName.
 java.net.URL findResourceURL(java.lang.String resourceName)
          Return URL for resource given by resourceName
 java.lang.String getClasspath()
           
static void main(java.lang.String[] args)
           
 void setClasspath(java.lang.String classpath)
           
 
Methods inherited from class java.lang.ClassLoader
defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CompilerClassLoader

public CompilerClassLoader()
Uses "user.home" as root dir to work from

CompilerClassLoader

public CompilerClassLoader(java.io.File sourceDirRoot)

CompilerClassLoader

public CompilerClassLoader(java.lang.ClassLoader parent)

CompilerClassLoader

public CompilerClassLoader(java.io.File sourceDirRoot,
                           java.lang.ClassLoader parent)
Method Detail

getClasspath

public java.lang.String getClasspath()

setClasspath

public void setClasspath(java.lang.String classpath)

findClassBytes

public byte[] findClassBytes(java.lang.String name)
Return byte array (which will be turned into a Class instance via ClassLoader.defineClass) for class
Specified by:
findClassBytes in interface ClassLoaderStrategy

findResourceURL

public java.net.URL findResourceURL(java.lang.String resourceName)
Return URL for resource given by resourceName
Specified by:
findResourceURL in interface ClassLoaderStrategy

findResourcesEnum

public java.util.Enumeration findResourcesEnum(java.lang.String resourceName)
Return Enumeration of resources corresponding to resourceName.
Specified by:
findResourcesEnum in interface ClassLoaderStrategy

findLibraryPath

public java.lang.String findLibraryPath(java.lang.String libraryName)
Return full path to native library given by the name libraryName.
Specified by:
findLibraryPath in interface ClassLoaderStrategy

findClass

protected java.lang.Class findClass(java.lang.String name)
                             throws java.lang.ClassNotFoundException
Retrieve compiled code
Overrides:
findClass in class java.lang.ClassLoader

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception