Setting CLASSPATH during runtime

和自甴很熟 提交于 2019-11-27 07:22:57

问题


How do I set a CLASSPATH variable during runtime while using IKVM?

I've been trying to do it by using: java.lang.System.setProperty("java.class.path", "whatever");

The class I'm calling requires a configuration file in the classpath to work - and I keep getting errors that seem to indicate that it hasn't gotten its settings.

Is the way I'm trying to add variable incorrect?


回答1:


I was trying to do the same thing. I had some jar files compiled to a .Net dll but some of those (3rd party) jar files were trying to load their configuration files from the java classpath.

I solved the problem by specifying the -classloader option for the ikvmc tool. Example:

ikvmc -out:mydotnetapp.dll -classloader:ikvm.runtime.ClassPathAssemblyClassLoader c:/myjavaapp/lib/*.jar

This worked for me!

Source for the solution: http://old.nabble.com/Not-able-to-load-files-from-ClassPath-td31141788.html




回答2:


If you really can't set the classpath beforehand yourself using the java's -cp or -classpath argument (why not by the way? that's the normal approach), then you can try to use URLClassLoader instead. Here's a kickoff example:

URL url = new URL(whateverPath);
ClassLoader contextCL = Thread.currentThread().getContextClassLoader();
ClassLoader urlCL = URLClassLoader.newInstance(new URL[] { url }, contextCL);
Thread.currentThread().setContextClassLoader(urlCL);
// ...

You only need to be lucky if the class you're calling is actually loading its resources through Thread.currentThread().getContextClassLoader().getResource() and thus not through SomeClass.class.getClassLoader().getResource().



来源:https://stackoverflow.com/questions/2899804/setting-classpath-during-runtime

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!