2010-05-24 98 views
3

如何在運行時使用IKVM設置CLASSPATH變量?運行時設置CLASSPATH

我一直在試圖通過做到這一點: java.lang.System.setProperty("java.class.path", "whatever");

類我打電話需要在類路徑配置文件來工作 - 我記住這似乎表明,它不是招」收到錯誤噸得到它的設置。

是我試圖添加變量的方式不正確嗎?

回答

0

我正在嘗試做同樣的事情。我有一些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

3

如果你真的不能設置使用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()

+0

我無法設置classpath中事先原因是,我跑在.net(JAR-文件重新編譯.NET程序集)與IKVM的虛的Java代碼。 IKVM不會從類路徑讀取。 上面的例子對任何Java代碼都很有用:) – Ciddan 2010-05-25 09:40:05