Jython & Mysql - какова практика подключения?

0

Просто попробуйте jython в первый раз, потому что что-то пришло на работу, которое подойдет для этого идеально для этого. Я предполагаю, что jython может подключать mysql jdbc с помощью драйвера mysql jdbc. После googling и чтения, однако у меня возникают проблемы, и кажется, что jython специфичен и, вероятно, прост. поэтому я делаю 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_17
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', '/JYTHONPATH/mysql-connector-java-5.1.10-bin.jar', '/WorkArea/Apps/jython/jython2.5.1/Lib', '__classpath__', '__pyclasspath__/', '/WorkArea/Apps/jython/jython2.5.1/Lib/site-packages']
>>>

код, который я запускаю

from java.lang import *
from java.sql import *
driverName="com.mysql.jdbc.Driver"
Class.forName(driverName)
url = "jdbc:mysql://localhost/test?user=jgreenaw&password="
con = DriverManager.getConnection(url)
stmt = con.createStatement() 

Выход

riux:Desktop$ jython pymysql.py 
Traceback (most recent call last):
  File "pymysql.py", line 7, in <module>
    Class.forName(driverName)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
        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: com.mysql.jdbc.Driver

любой совет?

спасибо

  • 0
    Вы уверены, что "/JYTHONPATH/mysql-connector-java-5.1.10-bin.jar" существует?
  • 0
    да: riuxjg: JYTHONPATH $ ls mysql-connector-java-5.1.10-bin.jar
Показать ещё 2 комментария
Теги:
jython

2 ответа

2

Добавьте mysql-connector-java-5.1.10-bin.jar в переменную среды CLASSPATH, а не только переменную среды JYTHONPATH.

2

Есть ли у вас права читать этот .jar? В своем коде попробуйте открыть его как файл. Также проверьте, является ли этот файл допустимым jar архивом, который содержит com/mysql/jdbc/Driver.class.

Пока я использую PostgreSQL для Windows, я могу проверить его с помощью:

import zipfile

def test_jar(jar_file, class_name):
    zf = zipfile.ZipFile(jar_file, 'r')
    cn = class_name.replace('.', '/') + '.class'
    zi = zf.getinfo(cn)
    print('%s: %s [b] -> %s [b]' % (zi.filename, zi.file_size, zi.compress_size))

test_jar('c:/jars/postgresql-8.3-603.jdbc4.jar', 'org.postgresql.Driver')
  • 0
    да, он находится в моей домашней папке, и тот же самый jar, который я использую для других программ java. Ранее я сделал jar -tvf mysql.jar | Драйвер grep и он нашел его. Спасибо за идею, хотя.
  • 0
    Что будет делать Jython, если вы удалите / переименуете файл .jar? Можете ли вы использовать любой инструмент ОС, чтобы проверить, какие файлы Jython пытается открыть?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню