I am trying to use this example:
http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html
to load some class files outside a package.
public class MainClass {
public static void main(String[] args){
ClassLoader classLoader = MainClass.class.getClassLoader();
try {
Class aClass = classLoader.loadClass("com.jenkov.MyClass");
System.out.println("aClass.getName() = " + aClass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
But that only seem to work for classes in a package. If I do:
...
ClassLoader classLoader = MainClass.class.getClassLoader();
String classPath = C://test//IOUtil.class
try {
Class aClass = classLoader.loadClass(classPath);
System.out.println("aClass.getName() = " + aClass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
...
I get the exception:
java.lang.ClassNotFoundException: C:/test/IOUtil.class
In the API:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ClassLoader.html#name
it says:
Any class name provided as a String parameter to methods in ClassLoader must be a binary name as defined by the Java Language Specification.
Examples of valid class names include:
"java.lang.String"
"javax.swing.JSpinner$DefaultEditor"
"java.security.KeyStore$Builder$FileBuilder$1"
"java.net.URLClassLoader$3$1"
I assume the error occurs because I don't supply a 'binary name'. But how do I specify a binary name for a local .class file on my disk?