Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Janino - создание класса из строки???!!!


Автор: Killer_13 27.2.2012, 17:45
Есть такая штучка Janino. Она умеет создавать классы из строки. Мне рубит ошибку. Материалов в инете "0"! 2 странички туториала и все! Не могу даже ни одной статьи найти. :(
Так вот, я хочу сделать обычный класс и вызвать метод, рубит ошибку 

Код

import java.io.IOException;
import java.io.StringReader;

import org.codehaus.commons.compiler.CompileException;
import org.codehaus.janino.SimpleCompiler;

public class JaninoCompileFromString {
    
    private static SimpleCompiler compiler = new SimpleCompiler();
    
    public static void main(String[] args) throws CompileException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        String source = "public class JaninoEvaluator implements Evaluator {\n"
                 +"\tpublic int evaluate(int i) {" + "\t\t"
                 +"\n" + "\t\treturn i-2;\n" + "\t}\n"
                 +"}\n";
        
        compiler.cook(new StringReader(source));
        
        Class clazz = compiler.getClassLoader().loadClass("JaninoEvaluator");
        
        Evaluator eval = (Evaluator)clazz.newInstance();
        
        System.out.println(source);
        System.out.println("\n\n\n evaluate(13): "+eval.evaluate(13));
    }
}



Код

Exception in thread "main" java.lang.VerifyError: (class: JaninoEvaluator, method: evaluate signature: (I)D) Expecting to find object/array on stack
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at JaninoCompileFromString.main(JaninoCompileFromString.java:26)



Спасибо.

Где можно почитать о этом?

 
В чем моя ошибка? :(


Автор: Killer_13 27.2.2012, 18:20
smilesmilesmile Вот я торрррмммооооззззз, 

Вот где сидела моя ошибка!!
Я забыл выложить
Код
public interface Evaluator {

    public double evaluate(int i);
}


а нужно
Код
public interface Evaluator {

    public int evaluate(int i);
}


Все запустилось, и заработало.

Еще бы подсказали где читать на данную тему. был бы премного благодареннн!!

А то мне нужно погулбже разобраться в данной теме...

Автор: Metalex 6.3.2012, 13:18
Никто не отменял http://docs.codehaus.org/display/JANINO/Home
Ссыль на http://stackoverflow.com/questions/5497210/parsing-java-source-code
И http://docs.codehaus.org/display/JANINO/Basic
больше, на удивление, не удалось найти.

Автор: Killer_13 7.3.2012, 15:28
Цитата(Metalex @ 6.3.2012,  13:18)
Никто не отменял http://docs.codehaus.org/display/JANINO/Home
Ссыль на http://stackoverflow.com/questions/5497210/parsing-java-source-code
И http://docs.codehaus.org/display/JANINO/Basic
больше, на удивление, не удалось найти.

Уважаемый, это все что вы предложили, у меня было, конечно я весь сайт облазил и так д...
Но все же, конкретных примеров у меня небыло, а со многими технологиями я не знаком.. :(
Как ни странно я тоже ничего не смог найти. :(
Не важно, вопрос уже решен - спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)