代码之家  ›  专栏  ›  技术社区  ›  AdamC

使用Eclipse插件中的Jython

  •  3
  • AdamC  · 技术社区  · 16 年前

    我很难让jython在从Eclipse插件运行时正常工作。我有一个简单的对象工厂,它加载符合Java接口的python模块。所有这些都可以在独立模式下正常工作。但是,当我将其打包为eclipse插件时,基于几个变量,我得到了一个不同的错误:

    假设我的java包是com.foo。

    2) 如果我随后使用以下命令将java JAR添加到sys.path:

    PythonInterpreter interp = new PythonInterpreter(null, new PySystemState());
    PySystemState sys = Py.getSystemState();
    sys.path.append(new PyString("myjar..."));
    

    我得到:

    a) 调用python模块的构造函数(显示contr中的print)
    b) 我接到一个PySingleton的电话

    3) 此时,我尝试使Eclipse中的类路径与独立类完全相同,因此在调用python解释器之前,我在运行时将JAR添加到类路径中。

    我收到我最喜欢的错误消息:SystemError:自动代理初始化应该只在代理类上发生

    这件事快把我逼疯了。我对在独立模式下运行的速度印象深刻。在Eclipse下运行应该有这么大的不同吗?我认为这应该只是类路径的问题,但到目前为止,似乎并不是这样。

    1 回复  |  直到 16 年前
        1
  •  5
  •   AdamC    16 年前

    终于弄明白了。以下是我必须做的:

    1) 我使用了JSR223脚本引擎而不是Python脚本引擎:

    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)

    希望这对别人有帮助。