2009-11-19 44 views
2

從Eclipse插件運行時,我很難讓jython正常工作。我有一個簡單的對象工廠,加載符合Java接口的python模塊。所有這些在獨立模式下都能正常工作。然而,當我把它作爲一個eclipse插件打包時,我根據幾個變量得到了一個不同的錯誤:從Eclipse插件使用Jython

鑑於我的java包是com.foo。

1)如果我不修改任何路徑運行,我得到: 「無模塊名爲foo」

2)如果我再使用加我的java罐子移到sys.path:

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

我得到:

一)我的Python模塊的構造函數被調用(打印在構造顯示出來)
b)我得到一個PySingleton從調用返回到tojava。名稱字段是「錯誤」。

3)在這一點上,我儘量使類路徑在Eclipse中完全一樣的獨立,所以我在運行時添加我的罐子到classpath Python解釋器調用前。

我得到我最喜歡的錯誤消息:關於SystemError:自動代理初始化應該只在代理類

這一次讓我發瘋發生。我在獨立模式下以多快的速度印象深刻。在Eclipse下運行應該有多大的不同?我認爲這應該只是類路徑的問題,但到目前爲止,似乎並不是這樣。

回答

5

最後把這個弄清楚。這是我必須做的:

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和任何要將模塊定位到Manifest中運行時類路徑的路徑。

希望這可以幫助別人。

+2

你的問題與我的問題無關,但3)添加jython.jar和任何你想要在Manifest中定位模塊到你的運行時類路徑的路徑。該評論幫助我在eclipse中使用python模塊。 – 2014-07-14 14:41:45