I have written my own Custom Class Loader to emulate the Primordial [System
Default] Class Loader in the Virtual Machine?
It works fine, except I don't think it work across packages.
Basically I would like to do this :
Properties jvmProps = System.getProperties();
String oldClassPath = System.getProperty("java.class.path");
jvmProp.put( "java.class.path", "extra/new/sexy.jar:"+oldClassPath );
But of course, this does not work! Hence my custom class loader.
Now want I have done is this. I have a java source file called
`foobar.java' linked a this extra Jar.
% javac -g -classpath animal.jar:$CLASSPATH acme/apps/foobar.java
Let suppose `sexy.jar' contains a class `animals/pets/Cat.class'
that `foobar.java' imports.
Once I compiled every java class for the project I can invoke the
application with.
% java -classpath animal.jar:$CLASSPATH acme.apps.foobar.java
Now I have made my CustomClassLoader bit more clever than usual.
It load classes, yes, but it also can invoke the main method of another
dynamically loaded class. In other words I use the it to load the
`acme.apps.foobar.class' and dynamically invoke the `public static void
main( String [] args )' for it.
(#1)
% java CustomClassLoaderLauncher animal.jar acme.apps.foobar
So the first argument is the extra class path to find classes and the
second argument is the class name containing `main()'.
I tried this in JDK 1.1.7-v1a Solaris/Linux. Although it loads the class
`acme.apps.foobar' and invoke `main()', it fails to find the
`animals.pet.Cat.class' inside the `animal.jar'.
I get `ClassDefNotFound' exception throwned.
However when I explicitly specify the jar in the classpath flag it works.
(#2)
% java -classpath animal.jar:$CLASSPATH CustomClassLoaderLauncher
animal.jar acme.apps.foobar
It seems to me it is impossible for custom class loader and launcher across
packages.
Why does (#1) fail and (#2) works ?
Can anyone figure out what I have done wrong?
Peter Pilgrim
----------------------------------------------------------------------
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]