来自jython的带有pydev的.class文件

时间:2009-07-02 18:18:00

标签: java python eclipse jython pydev

我第一次尝试jython是一个java / jython项目,我正在用pydev写日食。

我创建了一个java项目,然后通过RightClick项目使其成为一个pydev项目>> pydev>>设定为......你明白了。然后我添加了两个源文件夹,一个用于java,一个用于jython,每个源文件夹都有一个包。我将每个文件夹设置为项目的构建路径。我想我已经让你知道了所有这些,所以希望你能告诉我,不管我是否正确设置项目。

但真正的问题是:如何将我的jython代码制作成一个类文件,以便java代码可以使用它?首选的方法是eclipse / pydev会为我做这个自动,但我无法弄清楚。 jython用户指南中提到的内容暗示它是可能的,但我无法在任何地方找到相关信息。

编辑:我确实找到了一些信息herehere,但事情并不太顺利。

我一直非常密切地关注第二个链接中的指南,但我无法弄清楚如何让jythonc为我的python类创建一个构造函数。

2 个答案:

答案 0 :(得分:5)

Jythonc不再存在了,它已被分割到另一个名为Clamp的项目中,但随后说了......

  

...你可以预编译   你的python脚本到.class文件   使用:

     

jython [jython home] /Lib/compileall.py   [你保留你的目录   python代码]

来源 - Jython Newsletter, March 2009

当我用Python 2.7 代码提供一个文件夹(知道它会在Jython 2.5 中失败)时,它确实输出了一个.class文件,即使它没有功能。尝试使用Jython脚本。如果它有效,请告诉我们,因为我很快就会到达你的位置。

一旦你到目前为止,将命令行语句转换为PyDev中可以根据需要调用的外部工具并不困难。

答案 1 :(得分:0)

在“不使用jythonc从Java访问Jython”教程之后,可以在java代码中使用jython模块。唯一棘手的问题是* .py模块不会被编译为* .class文件。所以事实证明它是java中的异国情调脚本。性能当然可能会降低对jythonc'ed py模块的影响,但是当我从jython社区页面获得它们时,它们不会支持jythonc(事实上已经将它放在jython2.5.1中)。

因此,如果您决定遵循非jythonc方法,则上述教程是完美的。我不得不稍微修改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
    }