使用 IKVM 时如何在运行时设置 CLASSPATH 变量?
我一直在尝试通过使用:
java.lang.System.setProperty("java.class.path", "whatever");
我正在调用的类需要类路径中的配置文件才能工作 - 我不断收到错误,似乎表明它没有得到它的设置。
我尝试添加变量的方式不正确吗?
如果您确实无法使用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()
.
我试图做同样的事情。我将一些 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