我正在使用嵌入在Java项目中的Jython脚本,该项目是在安装了Pydev的Eclipse中开发的。现在我想在另一个纯Python项目中重用这个脚本。有没有办法干净地执行此操作而不复制脚本?
目前,我有一个Java项目,其目录为src/
(包含Java源代码)和src-py/
(包含Jython源代码),并添加了Pydev“facet”。 Java代码使用以下内容调用Jython代码:
// evaluate the Jython class
PythonInterpreter interpreter = new PythonInterpreter();
InputStream resourceAsStream = MyEclipsePlugin.getResource("/src-py/MyJythonCode.py");
interpreter.execfile(resourceAsStream);
// create an instance of the Jython class and retrieve a Java interface reference to it
interpreter.exec("x = MyJythonClass()"); // MyJythonClass implements MyJavaInterface
Object x = interpreter.get("x").__tojava__(MyJavaInterface.class);
return (MyJavaInterface) x;
这很有效,但显然很难看。从我读到的,有一个“jythonc”一次 - 这可能更接近我需要的东西 - 但它似乎已被弃用,你不鼓励使用它。没有它,我需要在运行时使用实际的Jython源代码将其编译为JVM类。因此上面的模式,遗憾的是似乎不支持加载模块,因此我目前正在使用单个.py文件中的所有内容。我想我最终可以多次执行interpreter.execfile()
,但是当模块之间存在相互依赖关系时,我还没有真正弄清楚如何做到这一点。
接下来,我尝试创建一个新的Jython项目来移动我的MyJythonCode.py
。不幸的是,我不能将Pydev / Jython项目添加为Java项目的项目引用,所以我不确定如何将它集成到Java项目中。
我目前看到的选项,我都不喜欢:
有人有更好的主意吗?
答案 0 :(得分:0)
我认为正确的事情是为这些内容设立一个单独的项目,这两个项目都依赖于......
即:
将该项目创建为java项目并在之后添加pydev属性(即:右键单击项目> pydev>设置为pydev项目)。
然后,在该项目中,您可以创建java包装类,并为pydev配置源路径(并将该项目添加为其他项目的参考:右键单击其他项目>属性>项目引用)
这样,事情应该适用于java / python。