ファイル システムに 1 つ以上の .class ファイルを生成した Groovyc を使用して Groovy スクリプトをコンパイルしたとします。Java アプリケーションから、これらのクラスをクラスパスに動的に追加して、クラスをロードしてメソッドを呼び出すにはどうすればよいですか? 目標は、Groovy スクリプトをプリコンパイルしてデータベースに保存することです。これにより、スクリプトのコンパイル済みバージョンから評価を実行できます。
4476 次
2 に答える
11
URLClassLoaderのインスタンスを作成して、ディレクトリから新しいクラスをロードできます。
URL dirUrl = new URL("file:/" + "path_to_dir" + "/"); // 1
URLClassLoader cl = new URLClassLoader(new URL[] {dirUrl},
getClass().class.getClassLoader()); // 2
Class loadedClass = cl.loadClass("com.xyz.MyClass");
MyClass obj = (MyClass) loadedClass.newInstance();
obj.doSomething();
1行URL
目は、.classファイルが存在するディレクトリにを作成します。
2行目は新しいURLClassLoader
インスタンスを作成します。最初の引数は、ソースとして使用されるURLの配列です。アレイ内で複数のディレクトリURLを指定できます。2番目の引数は、この新しいクラスローダーの親になるクラスローダーです。上記のコードを実行するクラスのクラスローダーをこの引数として渡します。
子クラスローダーによってロードされたクラスは、親クラスローダーによってロードされたクラスにアクセスできます。
于 2010-07-28T02:38:44.387 に答える
1
独自のクラスローダーを作成する必要があります。
このjavadoc リンクには、カスタムのものを定義する方法の例があります。
于 2010-07-28T00:32:37.470 に答える