把python程式用jython編譯為java的jar包

來源:互聯網
上載者:User
    jython是python的java版,他和c版本的python相比,它的優勢是:可以編譯為java的class檔案被java程式使用,可以被java程式嵌入,可以使用java的類庫。但目前jython的版本一直比較低,開發並不是很活躍,現在的最新版本是jython2.2。
    這裡我以一個簡單的程式作為樣本來看看怎麼把python程式編譯為java的jar包。注意的是:並不是所有的python程式都能用jython來編譯,因為jython的版本滯後於python,且python的一些庫jython是不支援的(這些主要是c/c++寫的庫)。jython可以到http://www.jython.org去下載。
    下面就是一段代碼,這個是jython帶的demo裡的,在jython22/Demo/swing下,檔案名稱叫TreeDemo.py :

data = {
    'PyObject': {
        'PyInteger':None,
        'PyFloat':None,
        'PyComplex':None,
        'PySequence': {
            'PyArray':None,
            'PyList':None,
            'PyTuple':None,
            'PyString':None,
        },
        'PyClass': {
            'PyJavaClass':None,
        },
    },
    'sys':None,
    'Py':None,
    'PyException':None,
    '__builtin__':None,
    'ThreadState':None,
}

from pawt import swing
Node = swing.tree.DefaultMutableTreeNode

def addNode(tree, key, value):
    node = Node(key)
    tree.add(node)
    if value is not None:
        addLeaves(node, value.items())

def addLeaves(node, items):
    items.sort()
    for key, value in items:
        addNode(node, key, value)

def makeTree(name, data):
    tree = Node('A Few JPython Classes')
    addLeaves(tree, data.items())
    return tree

if __name__ == '__main__':
    tree = makeTree('Some JPython Classes', data)
    swing.test(swing.JScrollPane(swing.JTree(tree)))

    如果直接運行這段程式,可以出來java的swing的一個顯示樹型結構的介面。當然執行的時候要用jython而不是python,最好是在命令列裡輸入:

jython TreeDemo.py

來執行。

    下面看看怎麼編譯,首先要確認你有jdk, 如果是jdk 1.5以上的版本,這樣就不用設定CLASSPATH環境變數了。注意:jdk 1.4版本是要設定CLASSPATH的!就是設定CLASSPATH=.;C:/j2sdk1.4.1_03/lib;C:/j2sdk1.4.1_03/lib/tools.jar; 可能jdk1.5在某些情況下有一些問題,1.4則基本不會。編譯的過程都在命令列中進行。

jythonc -a -C "C:/Program Files/Java/jdk1.5.0_06/bin/javac.exe" -jar tree.jar TreeDemo.py

    這樣就會產生一個叫 tree.jar 的包,以及一個叫jpywork的目錄,這個目錄是編譯過程用了的,編譯完了可以刪除。執行

java -jar tree.jar

就可以運行這個程式了。
這裡我以一個jython才能執行的程式為例介紹的,其實一個普通的只使用標準庫的python程式也是可以的。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.