Не удается заставить компилятор Janino компилировать файлы в том же каталоге, что и jar
Я использую Janino для компиляции Java-файлов во время выполнения для использования в программе. Я использую NetBeans и могу заставить его скомпилировать только во время выполнения, когда я помещаю каталог в папку src. Если я попытаюсь скомпилировать его, используя относительные пути, это не сработает.
Я следую примеру на http://docs.codehaus.org/display/JANINO/Advanced
Вот что работает, когда я помещаю файлы для компиляции во время выполнения в папку с именем 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 ответ
Я понял. Я должен был поставить new File(System.getProperty("user.dir")+"/scripts")
для пути