我在Jython的第一次尝试是一个Java / Jython的项目中,我在Eclipse中的PyDev写作。
我创建了一个Java项目,然后使其通过右击项目>> PyDev的一个项目的PyDev >>设为...你的想法。 然后我添加了两个源文件夹,一个用于java和一个用于Jython和每个源文件夹具有一个包。 我和每个文件夹设置为项目的构建路径一个。 我想我让你知道这一切,所以希望你能告诉我羯羊或不恰当的设置我的项目了。
但真正的问题是: 如何让我的Jython代码做成一个类文件,Java代码可以使用它? 首选的方法将是日食/ PyDev的将自动为我做到这一点,但我不能弄明白。 在Jython的用户指南中提到的一些暗示,它可能,但我不能找到它的信息的任何地方。
编辑:我确实发现了一些信息在这里和这里 ,但事情不会太顺利。
我一直非常密切关注的第二个环节的指导,但我无法弄清楚如何让jythonc也使我的蟒蛇类的构造函数。
jythonc也不存在了,它已经衍生出所谓的到另一个项目钳 ,但随着中说...
...你可以预编译你的Python脚本的.class文件的使用:
Jython的[Jython的家] /Lib/compileall.py [其中你保持你的Python代码的目录]
来源- Jython的时事通讯,2009年3月
当我喂一个文件夹与Python 2.7的代码(知道它会用Jython 2.5失败)它没有输出.class文件,即使它不工作。 尝试与您的Jython脚本。 如果一切正常,请让我们知道,因为我将是你很快在那里。
一旦你那么远,这是不难你的命令行语句转换为外部工具中的PyDev根据需要,可以调用。
继“访问从Java的Jython不使用jythonc也”教程就有可能使用Java代码内部的Jython模块。 唯一棘手的一点是,*的.py模块不被编译为* .class文件。 因此,原来是Java里面充满异国情调的脚本。 当然,可能会降低性能VS 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
}