[英]Standalone Jython: Import Error (Apache-POI)
在我嘗試將Jython與Apache-POI一起使用時,Jython獨立jar會拋出ImportError異常。
下面你會發現我如何調用我的Jython腳本:
java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py
錯誤:
Traceback(最近一次調用最后一次):
文件“main.py”,第32行,in
來自org.apache.poi.hssf.usermodel import *
ImportError:沒有名為apache的模塊
這是第32行的代碼:
from org.apache.poi.hssf.usermodel import *
為了使用Java的第三方應用程序,Jython是否有任何限制?
提前致謝,
您不能同時使用-cp
和-jar
。 -jar
選項會覆蓋任何其他類路徑設置。 請參閱http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html 。
使用python.path
系統屬性應該工作:
java -Dpython.path=C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py
這是一個替代命令:
java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar;jython.jar org.python.util.jython main.py
但是,事實證明這些命令都不適用於獨立的Jython 。 你得到一個ImportError
,就像它在問題中所說的那樣。 有一個看似相關的舊的開放式錯誤: http : //bugs.jython.org/issue1422 (它表示Solaris上存在問題,但就我所知,它確實適用於其他平台)。
使用已安裝的Jython和jython
命令可以正常工作:
jython -Dpython.path=C:\jAutoMailerScript\lib\poi-3.9-20121203.jar main.py
請注意,獨立的jython.jar包含標准庫Python模塊(在Lib
文件夾中)。 這些模塊不包含在安裝了Jython的jython.jar中。
我希望這個答案有所幫助,即使它可能無法完全解決您的問題。
我一直試圖重現你的問題,並遇到與2.5.3版本的獨立Jython相同的問題。 也嘗試了POI 3.7; 仍然是同樣的交易。 我也嘗試了sys.path.append建議,Arshad做了。 這里發生了一些奇怪的事情(使用不同的庫進行測試 - 這次是barcode4j):
c:\development\local\lib\jython-sa-2.5.3>java -jar jython-standalone-2.5.3.jar
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.7.0_10
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\Lib', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\jython-standalone-2.5.3.jar\\Lib', '__classpath__', '__pyclasspath__/']
>>> sys.path.append('C:\development\local\lib\barcode4j-2.0\build\barcode4j.jar')
>>> sys.path
['', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\Lib', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\jython-standalone-2.5.3.jar\\Lib', '__classpath__', '__pyclasspath__/', 'C:\\development\\local\\lib\x08arcode4j-2.0\x08uild\x08arcode4j.jar']
>>>
看看由於'\\'分隔符,路徑如何被擾亂?
(還嘗試了python.path建議,但它提供了與您報告的相同的錯誤。)
難道你正在遇到這個報道的問題或類似/相關的事情嗎? 它似乎與場景(獨立版本)以及您和我使用的版本相匹配。
與jython 2.5.4-rc1獨立使用commons-lang3-3.1.jar等相同的問題。我必須在獨立模式下使用它,所以這非常令人沮喪! :-(
編輯:這個人想通了! 為什么Jython拒絕找到我的Java包?
您必須為Jython獨立版添加以下標志才能工作!
java -Dpython.cachedir.skip=false -Dpython.cachedir=/tmp {...}
您可以嘗試將jar附加到系統路徑中,如下所示
sys.path.append('C:\jAutoMailerScript\lib\poi-3.9-20121203.jar')
然后嘗試運行相同的腳本。 雖然使用os模塊到達路徑會更好。 我不確定如何在Windows操作系統上的jython中處理斜杠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.