2010-05-24 93 views
3

如何在运行时使用IKVM设置CLASSPATH变量?运行时设置CLASSPATH

我一直在试图通过做到这一点: java.lang.System.setProperty("java.class.path", "whatever");

类我打电话需要在类路径配置文件来工作 - 我记住这似乎表明,它不是招”收到错误吨得到它的设置。

是我试图添加变量的方式不正确吗?

回答

0

我正在尝试做同样的事情。我有一些jar文件编译为.net dll,但其中一些(第三方)jar文件试图从java classpath加载它们的配置文件。

我通过为ikvmc工具指定-classloader选项来解决问题。例如:

ikvmc -out:mydotnetapp.dll -classloader:ikvm.runtime.ClassPathAssemblyClassLoader c:/myjavaapp/lib/*.jar 

这对我有效!

来源的解决方案:http://old.nabble.com/Not-able-to-load-files-from-ClassPath-td31141788.html

3

如果你真的不能设置使用java-cp-classpath参数(为什么不顺便说一下?这是正常的做法)事先自己类路径,那么你可以尝试使用URLClassLoader代替。这里有一个开球例如:

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

你只需要幸运的,如果你调用这个类是实际上通过Thread.currentThread().getContextClassLoader().getResource()加载其资源,从而通过 SomeClass.class.getClassLoader().getResource()

+0

我无法设置classpath中事先原因是,我跑在.net(JAR-文件重新编译.NET程序集)与IKVM的虚的Java代码。 IKVM不会从类路径读取。 上面的例子对任何Java代码都很有用:) – Ciddan 2010-05-25 09:40:05