Skip to Main Content

Java Programming

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Manually load .class outside package?

807588Jun 16 2009 — edited Jun 17 2009
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?
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 15 2009
Added on Jun 16 2009
34 comments
508 views