如何将jars动态添加到jython内部脚本?

时间:2009-11-13 17:54:52

标签: jython

我正在写一个与ldap服务器对话的python包。我希望它能在CPython和Jython中运行。为了使它与CPython一起使用,我已成功编写了针对python-ldap的代码。但是,要使它与Jython一起使用,我必须使用java jar。

如何使用我的包分发jar文件,这样如果它可以“导入java”,它就会知道它的jython,并动态地将java jar添加到路径中并使用它。但是,如果失败,它会知道它的CPython并使用python-ldap库。

有什么想法吗?

1 个答案:

答案 0 :(得分:25)

只需将你的jar添加到sys.path,就像这样:

~ $ jython
Jython 2.5.0+ (trunk:6691, Aug 17 2009, 17:09:38) 
[Java HotSpot(TM) Client VM (Apple Computer, Inc.)] on java1.6.0-dp
Type "help", "copyright", "credits" or "license" for more information.
>>> from org.thobe.somepackage import SomeClass # not possible to import yet
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named thobe
>>> import sys
>>> sys.path.append("/var/javalib/some-thobe-package.jar") # add the jar to your path
>>> from org.thobe.somepackage import SomeClass # it's now possible to import the package
>>> some_object = SomeClass() # You can now use your java class

它不能比那更简单:)

在您的情况下,您可能希望使用包的路径来查找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

希望有所帮助!