Я использую 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();