2013-02-22 36 views
5

Jython standalone jar đang ném ngoại lệ ImportError tại thời điểm tôi cố gắng sử dụng Jython cùng với Apache-POI.Standalone Jython: Lỗi nhập (Apache-POI)

Dưới đây bạn sẽ tìm thấy cách tôi gọi kịch bản của tôi Jython:

java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py 

Lỗi:

Traceback (gần đây nhất gọi cuối cùng):

File "main.py" , dòng 32, trong

từ org.apache.poi.hssf.usermo del nhập khẩu *

ImportError: Không có mô-đun tên apache

Đây là mã tại dòng # 32:

from org.apache.poi.hssf.usermodel import * 

Có bất kỳ hạn chế từ Jython để làm việc với thứ ba của Java ứng dụng của bên?

Cảm ơn trước,

Trả lời

7

Bạn không thể sử dụng -cp-jar cùng một lúc. Tùy chọn -jar ghi đè mọi cài đặt đường dẫn lớp khác. Xem http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html.

Sử dụng tài sản python.path hệ thống nên làm việc:

java -Dpython.path=C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py 

Dưới đây là một lệnh thay thế:

java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar;jython.jar org.python.util.jython main.py 

Tuy nhiên, nó chỉ ra rằng không ai trong số các lệnh làm việc với standalone Jython. Bạn nhận được một số ImportError, giống như trong câu hỏi. Có một lỗi mở cũ có vẻ liên quan: http://bugs.jython.org/issue1422 (nó nói rằng vấn đề tồn tại trên Solaris, nhưng nó cũng áp dụng cho các nền tảng khác quá xa như tôi có thể nói).

Sử dụng installed Jythonjython lệnh hoạt động tốt:

jython -Dpython.path=C:\jAutoMailerScript\lib\poi-3.9-20121203.jar main.py 

Lưu ý rằng jython.jar độc lập bao gồm các module thư viện Python chuẩn (trong thư mục Lib). Các mô-đun này không được bao gồm trong jython.jar mà bạn nhận được với Jython đã cài đặt.

Tôi hy vọng rằng câu trả lời này sẽ giúp, ngay cả khi nó có thể không giải quyết được vấn đề của bạn hoàn toàn.

+0

Nó vẫn đang ném thông báo ngoại lệ: ImportError – Eder

+0

Nhưng điều gì sẽ xảy ra nếu tôi muốn phát hành nó để nó được sử dụng trên một phiên bản khác máy tính? Có thể đóng gói nó không? – Eder

+0

Cài đặt "cơ bản" jython.jar không bao gồm các tệp Python thư viện chuẩn được nhóm trong jython.jar độc lập. Điều đó cần phải được xem xét tất nhiên. Tôi không chắc giải pháp tốt nhất là gì trong trường hợp của bạn. – mzjn

1

Bạn có thể thử thêm jar vào đường dẫn hệ thống của bạn như thế này

sys.path.append('C:\jAutoMailerScript\lib\poi-3.9-20121203.jar') 

Và sau đó cố gắng chạy kịch bản tương tự. Mặc dù nó sẽ là tốt hơn để sử dụng mô-đun os để có được đường dẫn. Tôi không chắc chắn làm thế nào các slashes được xử lý trong jython trên hệ điều hành windows.

+0

@Arshard_Ansari:! Người ta vẫn không hoạt động .. Có điều gì liên quan đến phiên bản jython mà tôi đang sử dụng không? (Jython Standalone 2.7b) – Eder

3

Tôi đã cố gắng tái tạo sự cố của bạn và gặp phải sự cố với phiên bản 2.5.3 của Jython độc lập. Cũng đã thử với POI 3.7; vẫn như vậy. Tôi cũng đã thử đề xuất sys.path.append, Arshad đã thực hiện. Một cái gì đó đặc biệt đang xảy ra ở đây (thử nghiệm với một thư viện khác nhau - thời gian barcode4j này):

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'] 
>>> 

Xem cách con đường được scrambled vì '\' delimiters?

(Cũng đã cố gắng đề nghị python.path nhưng nó mang lại những lỗi tương tự như bạn báo cáo.)

Nó có thể là bạn đang chạy vào this reported issue hoặc một cái gì đó tương tự/liên quan? Nó có vẻ phù hợp với kịch bản (phiên bản độc lập) và các phiên bản bạn và tôi đã sử dụng.

3

Vấn đề tương tự với jython 2.5.4-rc1 độc lập sử dụng commons-lang3-3.1.jar, v.v. Tôi phải sử dụng nó ở chế độ Standalone vì vậy điều này rất bực bội! :-(

EDIT: Người này figured it out Why does Jython refuse to find my Java package?

Bạn phải có thêm những lá cờ sau cho Jython độc lập để làm việc

java -Dpython.cachedir.skip=false -Dpython.cachedir=/tmp {...}