无法让Janino编译器在与jar相同的目录中编译文件

时间:2010-10-03 18:21:22

标签: java compiler-construction janino

我正在使用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();

如果我将scripts文件夹放在与jar相同的目录中,它就不起作用。 我只能在IDE中使用src目录中的scripts文件夹运行项目时才能使用它。

当我尝试使用与jar文件位于同一文件夹中的scripts文件夹运行项目时,它会给出一个ClassNotFoundException AbstractEngine engine = (AbstractEngine) cl.loadClass(engineClass).newInstance();

1 个答案:

答案 0 :(得分:0)

我明白了。我不得不把new File(System.getProperty("user.dir")+"/scripts")放在路径上