tags:

views:

71

answers:

1

How do I set a CLASSPATH variable during runtime while using IKVM?

I've been trying to do it by using: java.lang.System.setProperty("java.class.path", "whatever");

The class I'm calling requires a configuration file in the classpath to work - and I keep getting errors that seem to indicate that it hasn't gotten its settings.

Is the way I'm trying to add variable incorrect?

+1  A: 

If you really can't set the classpath beforehand yourself using the java's -cp or -classpath argument (why not by the way? that's the normal approach), then you can try to use URLClassLoader instead. Here's a kickoff example:

URL url = new URL(whateverPath).
ClassLoader contextCL = Thread.currentThread().getContextClassLoader();
ClassLoader urlCL = URLClassLoader.newInstance(new URL[] { url }, contextCL);
Thread.currentThread().setContextClassLoader(urlCL);
// ...

You only need to be lucky if the class you're calling is actually loading its resources through Thread.currentThread().getContextClassLoader().getResource() and thus not through SomeClass.class.getClassLoader().getResource().

BalusC
The reason I can't set the classpath beforehand is that I'm running the java code in .Net (jar-files recompiled to .net assemblies) with the IKVM VirtualMachine. IKVM does not read from the classpath.The example above would work great for any Java-code though :)
Ciddan