如何在運行時使用IKVM設置CLASSPATH變量?運行時設置CLASSPATH
我一直在試圖通過做到這一點: java.lang.System.setProperty("java.class.path", "whatever");
類我打電話需要在類路徑配置文件來工作 - 我記住這似乎表明,它不是招」收到錯誤噸得到它的設置。
是我試圖添加變量的方式不正確嗎?
如何在運行時使用IKVM設置CLASSPATH變量?運行時設置CLASSPATH
我一直在試圖通過做到這一點: java.lang.System.setProperty("java.class.path", "whatever");
類我打電話需要在類路徑配置文件來工作 - 我記住這似乎表明,它不是招」收到錯誤噸得到它的設置。
是我試圖添加變量的方式不正確嗎?
我正在嘗試做同樣的事情。我有一些jar文件編譯爲.net dll,但其中一些(第三方)jar文件試圖從java classpath加載它們的配置文件。
我通過爲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
如果你真的不能設置使用java
的-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()
。
我無法設置classpath中事先原因是,我跑在.net(JAR-文件重新編譯.NET程序集)與IKVM的虛的Java代碼。 IKVM不會從類路徑讀取。 上面的例子對任何Java代碼都很有用:) – Ciddan 2010-05-25 09:40:05