como passar parâmetros do lua para o java usando o Luaj

87 views
Skip to first unread message

Anderson Silva

unread,
Aug 10, 2010, 10:18:26 AM8/10/10
to lua...@googlegroups.com
Galera, sou novato e estou tendo alguns problemas com a integração entre Lua e Java,

eu estou utilizando o Luaj como interface com as duas linguagens e consigo fazer com que meu script
Lua chame um determinado método, porém nao sei como fazer para chamar um método com parâmetro.

exemplo de como eu uso e funciona:

Lua:

//Function é minha classe onde possui alguns métodos
obj = luajava.newInstance("ttf.Functions")

//ttstexto é um método sem parâmetro
obj:ttstexto()


Main do Java:

       ScriptEngineManager mgr = new ScriptEngineManager();
       ScriptEngine e  = mgr.getEngineByExtension(".lua");
       
        if (e==null)return;
       
        try {
            e.eval(textPaneScriptLua.getText());
        } catch (ScriptException ex) {
            System.out.println(ex);
        }

Meu problema:

se meu método precisar de parâmetro sendo este passado pelo script Lua como eu faço
para chamar esse método como o escrito abaixo?

public void ttstexto(long numero, char caminho)


Espero ter sido claro

Obrigado,

Anderson

laecio freitas

unread,
Aug 11, 2010, 6:08:41 PM8/11/10
to lua...@googlegroups.com
Pelos exemplos que vem com o Luaj é só passar os parâmetros:
obj:ttstexto(10, ' ')

Como tu faz p/ o luajava.newInstance instânciar a classe functions?

Fiz alguns exemplos, mas não consegui instânciar nenhuma classe criada por mim.

Anderson Silva

unread,
Aug 12, 2010, 11:46:49 AM8/12/10
to lua...@googlegroups.com
Eu consegui, obrigado

na minha frame em java eu coloquei uma textPane que vai ser onde
o usuario vai escrever seus scripts, entao com um botao eu leio
o conteudo como abaixo:


       
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine e  = mgr.getEngineByExtension(".
        if (e==null)return;
       
        try {
            //String script = textPaneScriptLua.getText();

            e.eval(textPaneScriptLua.getText());
        } catch (ScriptException ex) {
            System.out.println(ex);
        }

entao, em execução na minha textPane eu coloco o seguinte script
em lua:

obj = luajava.bindClass("ttf.TFfunctions")
a = luajava.new(obj)
a:ttsTexto(1,"c:\\exemplo.txt" , "c:\\FF.wav")

Obs: TFfunctions é minha classe no pacote ttf, onde tenho meu método ttsTexto

Tb da certo se usar o newInstance, mas em um exemplo que achei na net está
dessa forma então deixei assim mesmo.

Ah e baixei o .jar no site http://www.keplerproject.org/luajava/index.html#download
e coloquei no CLASSPATH da minha aplicação.

Obrigado

Anderson


Laécio F. Chaves

unread,
Aug 13, 2010, 9:33:39 AM8/13/10
to Lua BR
Você está usando Windows, Mac ou Linux?

Tentei compilar no Mac e no Linux e não consegui!

Anderson Silva

unread,
Aug 13, 2010, 12:12:17 PM8/13/10
to lua...@googlegroups.com
windows por enquanto, mas intenção é que seja multiplataforma.


Em 13 de agosto de 2010 10:33, Laécio F. Chaves <laecio...@gmail.com> escreveu:
Você está usando Windows, Mac ou Linux?

Tentei compilar no Mac e no Linux e não consegui!

laecio freitas

unread,
Sep 9, 2010, 12:24:56 PM9/9/10
to lua...@googlegroups.com
Quando tu compilou gerou todos esses arquivos:

LuaJava compilation generates two files: luajava-1.1.jar and luajava-1.1.dll (or libluajava-1.1.so in Unix, or libluajava-1.1.jnilib in MacOSX).

ou só o luajava-1.1.dll?

Anderson Silva

unread,
Sep 9, 2010, 1:30:59 PM9/9/10
to lua...@googlegroups.com
Nao, eu peguei o luaj-j2se-1.0.4.jar do site e adicionei ao meu projeto, só isso
e funcionou.
Reply all
Reply to author
Forward
0 new messages