1

Jythonをmysqlに接続しようとしています。「zxJDBC.jar」、「mm​​.mysql-2.0.4-bin.jar」、「mysql-connector-java-5.1.20-bin.jar」をダウンロードし、それらのパスをCLASSPATHに設定しました。

私のJythonスクリプトでは、両方

$from com.ziclix.python.sql import zxJDBC
$from org.gjt.mm.mysql import Driver

合格した。

でもいつ

$conn = zxJDBC.connect("jdbc:mysql://localhost/automobile2", "root", "nihaonlp", "org.gjt.mm.mysql.Driver")

通訳は私に言った

$zxJDBC.DatabaseError: driver [org.gjt.mm.mysql.Driver] not found

それを修正する方法は?

h

4

2 に答える 2

1

ここを見てください:

http://glasblog.1durch0.de/?p=846

基本的に、このトリックはClassLoaderを使用してクラスをロードし、jthon から使用できるようにします。

http://www.jython.org/jythonbook/en/1.0/appendixB.html#using-the-classpath-steve-langer

これにスクリプトを少し変更することをお勧めします。

class classPathHacker:
    ##########################################################
    # from http://forum.java.sun.com/thread.jspa?threadID=300557
    #
    # Author: SG Langer Jan 2007 translated the above Java to this
    #       Jython class
    # Modified 2012 by Malte Vesper
    # Purpose: Allow runtime additions of new Class/jars either from
    #       local files or URL
    ######################################################
    import java.lang.reflect.Method
    import java.io.File
    import java.net.URL
    import java.net.URLClassLoader
    import jarray

    def addFile (self, path):
        #############################################
        # Purpose: If adding a file/jar call this first
        #       with path = path_to_jar
        #############################################

        return self.addURL (self.java.io.File (path).toUrl())

    def addURL (self, url):
        ##################################
        # Purpose: Call this with u= URL for
        #       the new Class/jar to be loaded
        #################################

        parameters = self.jarray.array([self.java.net.URL], self.java.lang.Class)
        sysloader =  self.java.lang.ClassLoader.getSystemClassLoader()
        sysclass = self.java.net.URLClassLoader
        method = sysclass.getDeclaredMethod("addURL", parameters)
        jar_a = self.jarray.array([url], self.java.lang.Object)
        method.invoke(sysloader, jar_a)
        return url
于 2012-07-01T20:23:32.567 に答える
0

同じエラーの解決策を探してここに来ました。問題は、Eclipse Luna と pydev + jython 内で実行していることです。私が他の場所で読んだことから、クラスパス環境変数はIDEによって無視され、移植性の欠如のための悪い習慣であると考えられています.

とにかく、eclipse/pydev は初心者にとってかなり重く、解決策を見つけるのに時間がかかりました。共有したいと思います。

そのため、ドライバーをインストールした後、現在の Windows バージョン以外のどこにでも移動できますが、msi インストーラーは Program Files (x86)\Mysql の下に配置されます。

Eclipse で、[ウィンドウ] -> [設定] -> [PyDev] -> [インタープリター] -> [Jython インタープリター] に移動します。

ここで、パネル Libraries (通常はデフォルトで開く) を探し、New Jar ボタンを選択します。参照して、インストールされているドライバーの jar を見つけて選択します。これにより、jar がリストに追加され、ドライバーが実行時に検出されます。

于 2015-05-17T09:45:03.493 に答える