从Jython导入jar

时间:2015-08-04 14:19:01

标签: jython

我必须承认我对Jython导入逻辑感到有些困惑。

我现在可以手动将jar一个一个地添加到sys.path但是我有一大堆这些,这非常痛苦。

添加包含jar的目录显然不起作用。

最好的方法是什么?

3 个答案:

答案 0 :(得分:6)

以下代码应该为您提供技巧,并限制在使用标准jython库时需要执行的输入量。

import os,glob,sys

directories=['/path/to/jars/','/different/path/to/more/jars/']

for directory in directories:
    for jar in glob.glob(os.path.join(directory,'*.jar')):
        sys.path.append(jar)

更好的回答: 您可以在jython site-packages中创建一个.pth文件,并在其中包含要包含在路径中的jar的所有完整路径。这是我做的包括poi jars(.pth文件的内容):

/home/kris/jython2.5.3/poi-3.11/poi-3.11-20141221.jar
/home/kris/jython2.5.3/poi-3.11/poi-ooxml-3.11-20141221.jar
/home/kris/jython2.5.3/poi-3.11/poi-ooxml-schemas-3.11-20141221.jar
/home/kris/jython2.5.3/poi-3.11/ooxml-lib/xmlbeans-2.6.0.jar

执行此操作后,我可以导入而无需附加到路径:

from org.apache.poi.xssf.usermodel import XSSFWorkbook

答案 1 :(得分:1)

import sys
sys.path.append("/var/javalib/some-name-package.jar") # add the jar to your path
from org.somename.somepackage import SomeClass # it's now possible to import the package
some_object = SomeClass() # You can now use your java class

In your case you probably want to use the path of your package to find the jar:

# yourpackage/__init__.py

import sys, os
if 'java' in sys.platform.lower():
    sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                 "your-lib.jar"))
    from jython_implementation import library
else:
    from cpython_implementation import library

答案 2 :(得分:1)

取决于你如何运行Jython。一种非常简单的方法(如果适用)是将它们放在Java 引导类路径 之前运行jython

java -cp "lib/*" jython.jar <arguments>