2012-06-27 151 views
1

我試圖用MySQL連接Jython。我下載了「zxJDBC.jar」,「mm.mysql-2.0.4-bin.jar」和「mysql-connector-java-5.1.20-bin.jar」,並將它們的路徑設置爲CLASSPATH。Jython連接到mysql,未找到驅動程序錯誤

在我的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

回答

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 
+0

經過4個小時的挫折處理Jython和JDBC驅動程序後,我發現史蒂夫蘭格的作案方式是泰德的答案。它像一個魅力。 – Renklauf

+0

現在Jython支持通過sys.path.append修改類路徑,這應該是不必要的。 –

0

我來到這裏尋找同樣的錯誤的解決方案。問題是我在Eclipse Luna和pydev + jython中運行。從我在別處讀到的內容來看,IDE路徑環境變量會被IDE忽略,這被認爲是缺乏可移植性的不好的做法。

無論如何,eclipse/pydev對於初學者來說相當沉重,我花了一些時間來找出解決方案,並且我想分享它。

所以,安裝驅動程序後,可以去任何地方,但目前的Windows版本有一個msi安裝程序,它將把它放在Program Files(x86)\ Mysql下。

在Eclipse中,轉到Window-> Prefences-> PyDev-> Interpreters-> Jython Interpreter。

在這裏,查找面板庫(通常默認打開)並選擇New Jar按鈕。瀏覽找到安裝的驅動程序jar並選擇它。這應該將jar添加到列表中,然後在運行時找到驅動程序。

相關問題