【问题标题】:Setting CLASSPATH during runtime在运行时设置 CLASSPATH
【发布时间】:2011-02-23 09:30:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java .net ikvm


    【解决方案1】:

    如果您真的无法使用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().

    【讨论】:

    • 我无法预先设置类路径的原因是我正在使用 IKVM VirtualMachine 在 .Net 中运行 java 代码(将 jar 文件重新编译为 .net 程序集)。 IKVM 不会从类路径中读取。不过,上面的示例对任何 Java 代码都适用:)
    【解决方案2】:

    我试图做同样的事情。我将一些 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

    【讨论】:

      猜你喜欢
      • 2014-10-14
      • 2019-09-24
      • 2020-11-11
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多