3

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

我一直在尝试通过使用: java.lang.System.setProperty("java.class.path", "whatever");

我正在调用的类需要类路径中的配置文件才能工作 - 我不断收到错误,似乎表明它没有得到它的设置。

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

4

2 回答 2

3

如果您确实无法使用java's-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().

于 2010-05-24T23:45:16.140 回答
0

我试图做同样的事情。我将一些 jar 文件编译为 .Net dll,但其中一些(第 3 方)jar 文件试图从 java 类路径加载它们的配置文件。

我通过为 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

于 2011-11-19T15:16:17.333 回答