Làm cách nào để thêm trình điều khiển JDBC khi chạy vào Jython? Sử dụng CLASSPATH hoạt động, nhưng sử dụng sys.path không làm việc với zxJDBC mặc dù lớp được nhập tốt và có thể được thao tác từ dấu nhắc trình thông dịch Jython.Trình điều khiển Jython CLASSPATH, sys.path và JDBC
Tại sao công việc này:
$ 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')
<type 'net.sourceforge.jtds.jdbc.Driver'>
Nhưng điều này không?
$ ./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')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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
Ứng dụng này có liên quan gì đến trình nạp lớp không?
Có vẻ như lý do là vì Trình điều khiển JDBC chỉ sử dụng các trình điều khiển được nạp bằng trình nạp lớp hệ thống, mặc dù những gì được đăng ký là một cá thể trình điều khiển, không phải là một lớp. Cảm ơn bạn đã liên kết. Đối với bất kỳ người nào khác đọc, http://stackoverflow.com/questions/288828/how-to-use-a-jdbc-driver-from-an-arbitrary-location và http://www.kfu.com/~nsayer/ Java/dyn-jdbc.html có thể hữu ích. – lmz
-1 Liên kết chết, vì vậy giải pháp hiện đã bị mất. – brice
Liên kết hoạt động tốt. – hhhhhh