sách gpt4 ai đã đi

jdbc - Jython CLASSPATH、sys.path 和 JDBC 驱动程序

In lại 作者:行者123 更新时间:2023-12-03 14:46:07 36 4
mua khóa gpt4 Nike

如何在运行时将 JDBC 驱动程序添加到 Jython?使用 CLASSPATH 有效,但使用 sys.path 不适用于 zxJDBC,即使该类导入正常并且可以从 Jython 解释器提示符进行操作。

为什么这样做:

$ CLASSPATH=/tmp/jtds\-1.2.5.jar ./jython
*sys-package-mgr*: processing new jar, '/private/tmp/jtds-1.2.5.jar'
Jython 2.5.1 (Release_2_5_1:6813, Sep 26 2009, 13:47:54)
[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_20
Type "help", "copyright", "credits" or "license" for more information.
>>> from java.lang import Class
>>> Class.forName('net.sourceforge.jtds.jdbc.Driver')


但这不行吗?
$ ./jython

Jython 2.5.1 (Release_2_5_1:6813, Sep 26 2009, 13:47:54)
[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_20
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.extend(['/tmp/jtds-1.2.5.jar'])
>>> from java.lang import Class
>>> Class.forName('net.sourceforge.jtds.jdbc.Driver')
Theo dõi (cuộc gọi gần đây nhất là cuộc gọi cuối cùng):
Tệp "", dòng 1, trong
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)

java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver
>>> sys.path
['', '/home/me/pkg/jython2.5.1/Lib/site-packages/distribute-0.6.13-py2.5.egg', '/home/me/pkg/jython2.5.1/Lib', '__classpath__', '__pyclasspath__/', '/home/me/pkg/jython2.5.1/Lib/site-packages', '/home/me/pkg/jython2.5.1/Lib/site-packages/setuptools-0.6c11-py2.5.egg-info', '/tmp/jtds-1.2.5.jar']
>>> import net.sourceforge.jtds.jdbc.Driver as Driver
>>> drv = Driver()
>>> drv
jTDS 1.2.5

它与类加载器有关吗?

1 Câu trả lời

看起来即使更新的链接也不再起作用(至少对于 jython-2.5.3b3)。

这是一个工作版本:

def importJar(jarFile):
'''
import a jar at runtime (needed for JDBC [Class.forName])

adapted from http://forum.java.sun.com/thread.jspa?threadID=300557
Author: SG Langer Jan 2007 translated the above Java to Jython
Author: seansummers@gmail.com simplified and updated for jython-2.5.3b3

>>> importJar('jars/jtds-1.2.5.jar')
>>> import java.lang.Class
>>> java.lang.Class.forName('net.sourceforge.jtds.jdbc.Driver')

'''
from java.net import URL, URLClassLoader
from java.lang import ClassLoader
from java.io import File
m = URLClassLoader.getDeclaredMethod("addURL", [URL])
m.accessible = 1
m.invoke(ClassLoader.getSystemClassLoader(), [File(jarFile).toURL()])

nếu __name__ == '__main__':
import doctest
doctest.testmod()

我留着 this Gist更新了我的生产版本。

关于jdbc - Jython CLASSPATH、sys.path 和 JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3015059/

36 4 0
Bài viết được đề xuất: redhat - 如何设置rpmbuild目标文件夹
Bài viết được đề xuất: Clojure 部署?
Bài viết được đề xuất: haskell - Rank2Types/RankNTypes 在没有多型变量的情况下是否实用?
Bài viết được đề xuất: jsf - 在JSF消息中嵌入链接(或其他html)
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com