Pergunta sobre jython, pydev, eclipse, java, python – arquivo .class do jython com pydev

3

Minha primeira tentativa no jython é um projeto java / jython que estou escrevendo no eclipse com o pydev.

Eu criei um projeto java e então fiz dele um projeto pydev pelo projeto RightClick >> pydev >> definido como ... você entendeu. Em seguida, adicionei duas pastas de origem, uma para java e outra para o jython, e cada pasta de origem tem um pacote. E eu defino cada pasta como um caminho de construção para o projeto. Eu acho que estou deixando você saber tudo isso, então espero que você possa me dizer se eu configurei o projeto corretamente.

Mas a verdadeira questão é:Como obtenho meu código jython feito em um arquivo de classe para que o código java possa usá-lo? O método preferido seria que o eclipse / pydev fizesse isso automaticamente para mim, mas não consigo descobrir. Algo mencionado no guia do usuário do jython implica que é possível, mas não consigo encontrar informações nele em nenhum lugar.

EDIT: eu encontrei algumas informaçõesAqui eAqui, mas as coisas não estão indo muito lisas.

Eu tenho seguido o guia no segundo link bem de perto, mas não consigo descobrir como fazer o jythonc fazer um construtor para minha classe python.

É o local onde os arquivos de classe são gerados pelo jythonc no seu classpath? seth
Enviei uma resposta [aqui] [1] para uma questão relacionada. [1]:stackoverflow.com/questions/2583192/… Robert Fleming

Sua resposta

2   a resposta
5

Braçadeira, mas com isso dito ...

... você pode pré-compilar seus scripts python para arquivos .class usando:

jython [home jython] /Lib/compileall.py [o diretório onde você guarda seu código python]

Fonte -Boletim Jython, março de 2009

Quando eu alimentei uma pasta com Python2,7 código (sabendo que iria falhar no Jython2,5) gerou um arquivo .class, mesmo que não funcione. Tente isso com seus scripts Jython. Se funcionar, por favor avise-nos, porque eu estarei onde você está em breve.

Uma vez que você está tão longe, não é difícil converter sua instrução de linha de comando para uma ferramenta externa no PyDev que pode ser chamada conforme necessário.

0

Acessando o Jython a partir de Java sem o uso do jythonc", tornou-se possível usar os módulos jython dentro do código java. O único ponto complicado é que os módulos * .py não são compilados em arquivos * .class. Então, é um script exótico dentro do java. O desempenho pode, naturalmente, degradar os módulos py jythonc'ed, mas como eu consegui nas páginas da comunidade jython, eles não vão suportar o jythonc (e de fato já o descartaram no jython2.5.1).

Então, se você decidir seguir a abordagem não-jythonc, o tutorial acima é perfeito. Eu tive que modificar um pouco o código JythonFactory.java:

String objectDef = "=" + javaClassName + "(your_constructor_params here)";
try {
       Class JavaInterface = Class.forName(interfaceName);

       System.out.println("JavaInterface=" + JavaInterface);

       javaInt = 
            interpreter.get("instance name of a jython class from jython main function").__tojava__(JavaInterface);
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();  // Add logging here
    }

Perguntas relacionadas