![](/img/trans.png)
[英]Integrating a Java Class into a PyDev Project (Jython) in Eclipse
[英].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.