我正在研究穿插一堆jython和java代碼的應用程序。由於程序的性質(使用wsadmin),我們實際上僅限於Python 2.1如何在使用python的jar文件中調用python腳本?
我們目前有一個包含java源代碼和.py模塊的jar。該代碼目前使用java調用,但我想刪除這個,以便儘可能多地將功能遷移到jython。
我遇到的問題是我想從調用jython腳本導入或執行現有jar文件中的python模塊。我嘗試了幾種不同的方式,但都沒有成功。
我的目錄結構如下:
application.jar
|-- com
|--example
|-- action
|-- MyAction.class
|-- pre_myAction.py
首屆方法我試過是做從罐子進口。我添加了jar到我的sys.path,並試圖導入模塊使用兩個import com.example.action.myAction和import myAction。但是,即使我將init .py文件放入每個級別的目錄中,也沒有成功。
我試過的第二種方法是使用java類加載資源。所以我寫了下面的代碼:
import sys
import os
import com.example.action.MyAction as MyAction
scriptName = str(MyAction.getResource('/com/example/action/myAction.py'))
scriptStr = MyAction.getResourceAsStream('/com/example/action/myAction.py')
try:
print execfile(scriptStr)
except:
print "failed 1"
try:
print execfile(scriptName)
except:
print "failed 2"
這兩個都失敗了。至於我應該如何繼續,我現在有點不知所措。有任何想法嗎 ?
歡呼聲,
特雷弗
什麼是'scriptName'和'scriptStr'的內容? – badp 2010-03-31 08:01:03
在jar文件中。它在調用jython的類路徑中。如果我打印sys.path,你會在那裏看到它。只是爲了徹底,我已經嘗試使用sys.path.append()將代碼直接添加到代碼中,但它沒有任何區別。 – Trevor 2010-03-31 08:12:44
看看'zipimport'(http://docs.python.org/library/zipimport.html)和底部的例子。當你寫'init.py'時,意思是'__init __。py',對吧? – 2010-03-31 09:15:23