繁体   English   中英

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

[英].class file from jython with pydev

我第一次尝试jython是一个java / jython项目,我正在使用pydev在eclipse中编写。

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

但真正的问题是: 如何将我的jython代码变成类文件,以便java代码可以使用它? 首选方法是eclipse / pydev会自动为我执行此操作,但我无法弄明白。 jython用户指南中提到的东西暗示它是可能的,但我无法在任何地方找到它的信息。

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

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

Jythonc不再存在了,它已被分到另一个叫做Clamp的项目,但据说有......

...您可以使用以下命令将python脚本预编译为.class文件:

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

来源 - Jython通讯,2009年3月

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

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

在“不使用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
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM