【发布时间】:2011-02-23 09:30:08
【问题描述】:
在使用 IKVM 时如何在运行时设置 CLASSPATH 变量?
我一直在尝试使用:
java.lang.System.setProperty("java.class.path", "whatever");
我正在调用的类需要类路径中的配置文件才能工作 - 我不断收到错误,似乎表明它没有得到它的设置。
我尝试添加变量的方式不正确吗?
【问题讨论】:
在使用 IKVM 时如何在运行时设置 CLASSPATH 变量?
我一直在尝试使用:
java.lang.System.setProperty("java.class.path", "whatever");
我正在调用的类需要类路径中的配置文件才能工作 - 我不断收到错误,似乎表明它没有得到它的设置。
我尝试添加变量的方式不正确吗?
【问题讨论】:
如果您真的无法使用java 的-cp 或-classpath 参数自己预先设置类路径(顺便说一句,这是正常的方法),那么您可以尝试使用@987654321 @ 反而。这是一个启动示例:
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().
【讨论】:
我试图做同样的事情。我将一些 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
【讨论】: