【问题标题】:Jython connect to mysql, Driver not found errorJython 连接到 mysql,找不到驱动程序错误
【发布时间】:2012-06-27 01:54:18
【问题描述】:

我正在尝试将 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

【问题讨论】:

    标签: mysql driver jython


    【解决方案1】:

    看这里:

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

    基本上,这个技巧将使用 ClassLoader 加载您的类,以便您可以从 jython 使用它

    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
    

    【讨论】:

    • 在与 Jython 和 JDBC 驱动程序打交道 4 小时后,我通过 ted 的回答找到了 Steve Langer 的破解方法。它就像一个魅力。
    • 这应该是不必要的,因为 Jython 支持通过 sys.path.append 修改类路径。
    【解决方案2】:

    我来这里是为了寻找相同错误的解决方案。问题是我在 Eclipse Luna plus pydev + jython 中运行。从我在其他地方读到的内容来看,IDE 忽略了类路径环境变量,由于缺乏可移植性,这被认为是不好的做法。

    无论如何,eclipse/pydev 对于初学者来说相当繁重,我花了一些时间想出解决方案,我想分享一下。

    所以,在安装驱动程序后,它可以去任何地方,但当前的 Windows 版本有一个 msi 安装程序,它将把它放在 Program Files (x86)\Mysql 下。

    在 Eclipse 中,转到 Window->Preferences->PyDev->Interpreters->Jython Interpreter。

    在这里,查找面板库(通常默认打开)并选择新建 Jar 按钮。浏览以找到已安装驱动程序的 jar 并选择它。这应该将 jar 添加到列表中,然后将在运行时找到驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 2016-07-14
      相关资源
      最近更新 更多