我使用的是一个嵌入在Java项目中的Jython脚本,该脚本是在Eclipse中开发并安装了Pydev的。现在我想在另一个纯Python项目中重用这个脚本。有没有一种方法可以在不复制脚本的情况下干净地完成这项工作?在
目前,我有一个单独的Java项目,其中添加了目录src/
(包含Java源代码)和{
// 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项目中。在
我目前看到的选项,我都不喜欢:
有人有更好的主意吗?在
我认为正确的做法应该是为这些内容单独设计一个项目,这两个项目都依赖于。。。在
即:
将该项目创建为java项目,然后将pydev属性添加到该项目中(即:右键单击该项目>;pydev>;setaspydev项目)。在
然后,在该项目中,您可以创建java包装器类,还可以配置pydev的源路径(并将该项目添加为其他项目的引用:右键单击other projects>;“properties”>;“project references”)。在
这样,java/python都可以正常工作。在
相关问题 更多 >
编程相关推荐