Java 在运行时设置类路径

Java 在运行时设置类路径,java,.net,ikvm,Java,.net,Ikvm,使用IKVM时,如何在运行时设置类路径变量 我一直在尝试通过使用: java.lang.System.setProperty(“java.class.path”,“随便什么”) 我调用的类需要在类路径中有一个配置文件才能工作——我不断收到错误,这些错误似乎表明它没有得到设置 我尝试添加变量的方式是否不正确?如果您确实无法使用java的-cp或-classpath参数预先设置类路径(顺便问一下,为什么不这样做?这是正常的方法),那么您可以尝试使用。以下是一个启动示例: URL url = new

使用IKVM时,如何在运行时设置类路径变量

我一直在尝试通过使用:
java.lang.System.setProperty(“java.class.path”,“随便什么”)

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


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

如果您确实无法使用
java
-cp
-classpath
参数预先设置类路径(顺便问一下,为什么不这样做?这是正常的方法),那么您可以尝试使用。以下是一个启动示例:

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文件编译成.NETDLL,但其中一些(第三方)jar文件试图从java类路径加载配置文件

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

ikvmc -out:mydotnetapp.dll -classloader:ikvm.runtime.ClassPathAssemblyClassLoader c:/myjavaapp/lib/*.jar
这对我有用


解决方案的来源:

我无法预先设置类路径的原因是我正在使用IKVM VirtualMachine运行.Net中的java代码(jar文件重新编译为.Net程序集)。IKVM不从类路径读取。不过,上面的示例对于任何Java代码都非常有用:)