当从 Eclipse 插件运行时,我很难让 jython 正常工作。我有一个简单的对象工厂,它加载符合 Java 接口的 python 模块。所有这些在独立模式下都可以正常工作。然而,当我将其打包为 Eclipse 插件时,我根据一些变量收到了不同的错误:
鉴于我的java包是com.foo。
1)如果我在不修改任何路径的情况下运行,我会得到:“没有名为 foo 的模块”
2)如果我随后使用以下命令将 java jar 添加到 sys.path 中:
PythonInterpreter interp = new PythonInterpreter(null, new PySystemState());
PySystemState sys = Py.getSystemState();
sys.path.append(new PyString("myjar..."));
I get:
a) 我的 python 模块构造函数被调用(构造中的打印显示)
b) 我得到一个从调用返回的 PySingletontojava。名称字段是“错误”。
3)此时,我尝试使 Eclipse 中的类路径与 Standalone 中的类路径完全相同,因此我在运行时调用 python 解释器之前将 jar 添加到类路径中。
我收到我最喜欢的错误消息:SystemError:自动代理初始化应该只发生在代理类上
这让我发疯。我对在独立模式下的运行速度印象深刻。在 Eclipse 下运行应该有那么大的不同吗?我相信这应该只是类路径的问题,但到目前为止,似乎并非如此。
终于把这个搞清楚了这是我必须做的:
1)我使用 JSR223 ScriptEngine 而不是 PythonInterpreter:
engine.get(module_name); //gets the class object of the module
getConstructors[0].newInstance(null) on the class to get an object
//cast it to your interface!
2)确保您的Eclipse插件没有打包为jar(在3.5中设置Eclipse-BundleShape:dir)
3) 将 jython.jar 和您想要将模块定位到清单中的运行时类路径的任何路径添加到清单中。
希望这对某人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)