Building classpath at runtime

G

goyald

Friends
I see this question appearing very often in forums but couldn't find a
satisfactory answer. Following is what I am trying achive
1. I have a java application that depends on several classes that are
packaged as jars.
2. Application runs as java -jar "XXX" -cp <classpath>
3. I sometimes need to create emergency fixes or jars. I will like to
put them in an "updates" directory. As names of these jar files will be
determined later, I want my program to scan "updates" directory at
startup, and prepend (before initial classpath) any discovered jar
files.
4. I know that ClassLoader.loadClass() is a viable method but most of
my code takes a new <class>() approach. I will appreciate any
suggestions.

Following is my sample test code.

//////////////////////////// Sample Code
///////////////////////////////

import java.io.FileInputStream;
import java.util.Properties;

public class PropertiesTest {
public static void main(String[] args) throws Exception {

System.getProperties().list(System.out);
// My original classpath does not have c:\\updates
System.setProperty("java.class.path",
"=c:\\updates;.;C:\\Program Files\\Java\\jre1.5.0_06;c:\\updates");
System.getProperties().list(System.out);
NewClass myclass = new NewClass(); // >>>>>>>> Need to load
this class from a location "c:\updates"
// determined at runtime<<<<
myclass.hello();
}
}
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

I see this question appearing very often in forums but couldn't find a
satisfactory answer. Following is what I am trying achive
1. I have a java application that depends on several classes that are
packaged as jars.
2. Application runs as java -jar "XXX" -cp <classpath>
3. I sometimes need to create emergency fixes or jars. I will like to
put them in an "updates" directory. As names of these jar files will be
determined later, I want my program to scan "updates" directory at
startup, and prepend (before initial classpath) any discovered jar
files.
4. I know that ClassLoader.loadClass() is a viable method but most of
my code takes a new <class>() approach. I will appreciate any
suggestions.

My suggestion would be to:
- put the release jars in lib
- put the patch jars in update
- drop the -cp parameter
- let the main program only create a new URLClassLoader with
first all jars from update and then all jars from lib
and then call the real main

Arne
 
G

goyald

Thanks. I will try that and get back to you.

- put the release jars in lib
- put the patch jars in update
- drop the -cp parameter
- let the main program only create a new URLClassLoader with
first all jars from update and then all jars from lib
and then call the real main

Arne
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,070
Latest member
BiogenixGummies

Latest Threads

Top