IKVM を使用しているときに実行時に CLASSPATH 変数を設定するにはどうすればよいですか?
私はそれを使用してそれをやろうとしてきました:
java.lang.System.setProperty("java.class.path", "whatever");
私が呼び出しているクラスが機能するには、クラスパスに構成ファイルが必要です。また、設定が取得されていないことを示すエラーが発生し続けます。
変数を追加しようとしている方法は間違っていますか?
java
's-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()
。
私は同じことをしようとしていました。いくつかの jar ファイルを .Net dll にコンパイルしましたが、それらの (サード パーティの) 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