簡體   English   中英

來自jython的帶有pydev的.class文件

[英].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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM