以下Groovy腳本可以從命令行正常工作。 (我順利拿到連接。)爲什麼在GroovyConsole中DriverManager.getConnection()查找失敗?
// ---- jdbc_test.groovy
import java.sql.*
Class.forName("com.mysql.jdbc.Driver")
def con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"root",
"password")
println con
> groovy -cp lib\mysql-connector-java-5.1.25-bin.jar script\jdbc_test.groovy
[email protected]
但如果同一個腳本被加載到groovyConsole中(2.4.3),然後運行 - 使用「腳本」添加mysql-connector-java-5.1.25-bin.jar
後| 「罐(S)添加到類路徑」 - 失敗:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
at java_sql_DriverManager$getConnection.call(Unknown Source)
at jdbc_test.run(jdbc_test.groovy:3)
我已經加入到groovyConsole中的類路徑,並已嘗試工作每隔包或類。 Groovy的類加載和DriverManager的工作方式有一些意外的交互作用嗎?
有沒有辦法解決這個問題?我試圖用GroovyConsole交互地測試一些JDBC代碼(一個函數庫,每個函數都以Connection作爲第一個參數)。
更新:Class.forName()
部分似乎工作正常。如果我'腳本'| 「清除腳本上下文」,然後重新運行在groovyConsole中的腳本,我反而得到:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
如果我回到加mysql-connector-java-5.1.25-bin.jar
,我回去讓:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
感謝。這很好地解釋了它。使GroovyConsole可用的驅動程序jar文件最簡潔的方法似乎是將其放到'{user.home} /。groovy/lib'中。這是Groovy的「conf/groovy-starter.conf」中包含的位置之一。 – Paul
感謝您的回答!我沒有將驅動程序jar放在classpath上,而是通過用Java編寫的類來代理對DriverManager的調用,這似乎也能正常工作。 – David