2012-06-27 7 views
1

MySQL과 Jython을 연결하려고합니다. "zxJDBC.jar", "mm.mysql-2.0.4-bin.jar"및 "mysql-connector-java-5.1.20-bin.jar"를 다운로드하고 경로를 CLASSPATH로 설정했습니다. 내 자이 썬 스크립트에서 Jython이 mysql에 연결했습니다. 드라이버를 찾을 수 없습니다.

통과 모두

$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 

해결 방법을하라고? 시간

답변

1

여기 좀 봐 :

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

기본적으로,이 트릭은 당신이 자이 썬

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

에서 사용할 수 있도록 ClassLoader를 사용하여 클래스를로드합니다 이 스크립트를 약간 수정하는 것이 좋습니다 :

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

자이 썬과 JDBC 드라이버를 다루는 데 4 시간의 좌절감을 느낀 끝에 나는 ted의 대답을 통해 스티브 랭거 (Steve Langer)의 해킹을 발견했다. 그것은 매력처럼 작동합니다. – Renklauf

+0

자이 썬이 sys.path.append를 통해 classpath를 수정하는 것을 지원하기 때문에 이것은 불필요하다. –

0

동일한 오류에 대한 해결책을 찾고자 왔습니다. 문제는 내가 Eclipse Luna plus pydev + jython 내에서 실행되고 있다는 것이다. 내가 다른 곳에서 읽은 것에서, classpath 환경 변수는 IDE에 의해 무시되며, 이식성이 부족한 나쁜 관행으로 간주된다.

어쨌든, 이클립스/pydev 초보자를위한 꽤 무거운이며 솔루션을 알아낼 시간이 좀 걸렸습니다 그리고 그것을 공유하고 싶습니다.

드라이버를 설치 한 후에는 현재 Windows 버전을 제외하고 어디든지 갈 수있는 msi 설치 프로그램이 Program Files (x86) \ Mysql에 저장됩니다.

이클립스에서는 Window-> Prefences-> PyDev-> Interpreters-> Jython Interpreter로 이동하십시오.

여기에서 라이브러리 패널 (보통 기본적으로 열림)을 찾고 새 Jar 버튼을 선택합니다. 찾아보기를 클릭하여 설치된 드라이버의 항아리를 찾은 다음 선택하십시오. 그러면 Jar 파일이 목록에 추가되고 드라이버가 런타임에 발견됩니다.

관련 문제