2011-02-08 4 views
1

Так что у меня проблемы с освещением с помощью eclipse. Я не уверен, что это проблема Java или проблема Eclipse.Вопросы о (обновлении) .class files

Я пытаюсь создать файл .java, а затем я пытаюсь создать экземпляр объекта этого типа и запустить определенный метод, который я определил в этом классе.

код, я использую, чтобы создать исходный файл с классом classname и запустить метод method:

Class cl = Class.forName(classname); 
java.lang.reflect.Constructor co = cl.getConstructor(); 
cl.getMethod(method).invoke(co.newInstance()); 

Когда я создаю файл .java («динамический» класс/код), мой код бросает исключение ClassNotFoundException. Если я щелкнул правой кнопкой мыши по моему проекту и нажал обновление, появится .java, создается класс .class, и мой код работает нормально. Очевидно, это проблема, потому что я пытаюсь сделать все это одним выстрелом, и, очевидно, необходимость обновить пакет моего проекта - проблема.

В любом случае?

ответ

1

Вам необходимо (по крайней мере, концептуально) отделить среду исполнения от среды сборки. Если целью вашей программы является создание исходного файла Java, ее компиляция, а затем ее использование в рамках одной и той же среды выполнения, вам необходимо найти способ сделать это программно, отделившись от Eclipse. Если ваша цель состоит в том, чтобы всегда запускать вашу программу способом, связанным с Eclipse, вам лучше создать подключаемый модуль Eclipse.

Для этого все в пределах одной рабочей среды Java, вам необходимо загрузить use the JDK tools to invoke the compiler, а затем use a custom classloader, чтобы загрузить результат.

0

Если вы создаете файл Java на лету, вам, вероятно, нужно будет вызвать команду javac для ее компиляции сначала, прежде чем вы сможете выполнить свой код. Вы можете программно вызвать команду javac, используя Runtime.exec(..).

0

В среде Eclipse, когда вы делаете изменения, и среда IDE не принимает или не распознает их, вы должны обновить, и вы также должны перейти в Project -> Очистить и очистить этот проект и все, от которого оно зависит , Уборка часто и обычно устраняет проблемы.

0

Вы должны взглянуть на проект Codehaus JANINO. http://docs.codehaus.org/display/JANINO/Home

Я использовал его раньше в проекте с большим количеством динамически сгенерированных и зарегистрированных классов.

Настоящий документ является частью отрывка с сайта проекта.

Janino - сверхмалый, сверхбыстрый Java ™-компилятор. Он может не только скомпилировать набор исходных файлов в набор файлов классов, таких как инструмент JAVAC, но также может компилировать выражение Java ™, блок, тело класса или исходный файл в памяти, загрузить байт-код и выполнить его непосредственно в такой же JVM.

Смежные вопросы