0

Janinoを使用して、実行時にJavaファイルをコンパイルしてプログラムで使用しています。私はnetbeansを使用していますが、ディレクトリをsrcフォルダーに置いた場合にのみ、実行時にコンパイルすることができます。相対パスを使用してコンパイルしようとすると、機能しません。

私はhttp://docs.codehaus.org/display/JANINO/Advanced#Advanced-compilerの例に従っています

実行時にコンパイルするファイルをsrcディレクトリのscriptsというフォルダに置くと次のようになります。

        String engineClass = "DefaultEngine"; //name of engine class
        String guiClass = "DefaultGUI"; // name of gui class
        ClassLoader cl = new JavaSourceClassLoader(
                this.getClass().getClassLoader(),
                new File[]{new File("scripts")},
                (String) null,
                DebuggingInformation.NONE);
        AbstractEngine engine = (AbstractEngine) cl.loadClass(engineClass).newInstance();
        AbstractGUI gui = (AbstractGUI) cl.loadClass(guiClass).newInstance();

スクリプトフォルダをjarと同じディレクトリに置くと機能しません。srcディレクトリのscriptsフォルダを使用してIDE内からプロジェクトを実行した場合にのみ、プロジェクトを機能させることができます。

jarファイルと同じフォルダーにあるscriptsフォルダーを使用してプロジェクトを実行しようとすると、 AbstractEngine engine = (AbstractEngine) cl.loadClass(engineClass).newInstance();行にClassNotFoundExceptionが発生します。

4

1 に答える 1

0

私はそれを考え出した。new File(System.getProperty("user.dir")+"/scripts")私は道のために置かなければなりませんでした

于 2010-10-03T18:47:13.923 に答える