![](/img/trans.png)
[英]Integrating a Java Class into a PyDev Project (Jython) in Eclipse
[英].class file from jython with pydev
我第一次嘗試jython是一個java / jython項目,我正在使用pydev在eclipse中編寫。
我創建了一個java項目,然后通過RightClick項目設置為pydev項目>> pydev >>設置為...你明白了。 然后我添加了兩個源文件夾,一個用於java,一個用於jython,每個源文件夾都有一個包。 我將每個文件夾設置為項目的構建路徑。 我想我已經讓你知道了所有這些,所以希望你能告訴我我是否正確設置項目。
但真正的問題是: 如何將我的jython代碼變成類文件,以便java代碼可以使用它? 首選方法是eclipse / pydev會自動為我執行此操作,但我無法弄明白。 jython用戶指南中提到的東西暗示它是可能的,但我無法在任何地方找到它的信息。
我一直非常密切地關注第二個鏈接中的指南,但我無法弄清楚如何讓jythonc為我的python類創建一個構造函數。
Jythonc不再存在了,它已被分到另一個叫做Clamp的項目,但據說有......
...您可以使用以下命令將python腳本預編譯為.class文件:
jython [jython home] /Lib/compileall.py [保存python代碼的目錄]
來源 - Jython通訊,2009年3月
當我用Python 2.7代碼提供一個文件夾(知道它在Jython 2.5中會失敗)時,它確實輸出了一個.class文件,即使它不起作用。 嘗試使用Jython腳本。 如果它有效,請告訴我們,因為我很快就會到達你的位置。
一旦你到目前為止,將命令行語句轉換為PyDev中的外部工具並不難,可以根據需要調用它。
在“不使用jythonc從Java訪問Jython”教程之后,可以在java代碼中使用jython模塊。 唯一棘手的問題是* .py模塊不會被編譯為* .class文件。 所以事實證明它是java中的異國情調腳本。 性能當然可能會降低對jythonc'ed py模塊的影響,但是當我從jython社區頁面獲得它們時它們不會支持jythonc(事實上已經將它放在jython2.5.1中)。
因此,如果您決定遵循非jythonc方法,上面的教程是完美的。 我不得不稍微修改JythonFactory.java代碼:
String objectDef = "=" + javaClassName + "(your_constructor_params here)";
try {
Class JavaInterface = Class.forName(interfaceName);
System.out.println("JavaInterface=" + JavaInterface);
javaInt =
interpreter.get("instance name of a jython class from jython main function").__tojava__(JavaInterface);
} catch (ClassNotFoundException ex) {
ex.printStackTrace(); // Add logging here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.