Не могу заставить компилятор Janino компилировать файлы в том же каталоге, что и jar - PullRequest
0 голосов
/ 03 октября 2010

Я использую Janino для компиляции Java-файлов во время выполнения для использования в программе.Я использую NetBeans и могу заставить его скомпилировать только во время выполнения, когда я помещаю каталог в папку src.Если я попытаюсь скомпилировать его, используя относительные пути, он не будет работать.

Я буду следовать примеру на http://docs.codehaus.org/display/JANINO/Advanced#Advanced-compiler

Вот что работает, когда я помещаю файлы вскомпилирован во время выполнения в папке с именем scripts в каталоге src:

        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 с папкой scripts в каталоге src.

Когда я пытаюсь запустить проект, используя папку scripts в той же папке, что и файл jarвыдает ClassNotFoundException в строке AbstractEngine engine = (AbstractEngine) cl.loadClass(engineClass).newInstance();

1 Ответ

0 голосов
/ 03 октября 2010

Я понял это.Я должен был поставить new File(System.getProperty("user.dir")+"/scripts") для пути

...