2016-02-17 39 views
1

在這個Java項目中,我想嘗試與HikariCP合作,看看我是否願意。無法將MySQLDataSource轉換爲java.sql.driver

起初看起來很簡單,但是當我真正嘗試運行我的應用程序時,它出錯了。下面的代碼是一個函數在我DatabasePool.java

HikariConfig configuration = new HikariConfig(); 
    configuration.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/testdb"); 
    configuration.addDataSourceProperty("serverName","127.0.0.1"); 
    configuration.addDataSourceProperty("port", 3306); 
    configuration.addDataSourceProperty("databaseName", "testdb")); 
    configuration.addDataSourceProperty("user", "root"); 
    configuration.addDataSourceProperty("password", "123"); 
    configuration.setDriverClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); 
    this.database = new HikariDataSource(configuration); 
    return true; 

,由於某種原因,當這個被跑了,我得到以下錯誤回:

[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-0 - is starting. 
[main] WARN com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=org.mariadb.jdbc.MySQLDataSource was not found, trying direct instantiation. 
[main] WARN com.zaxxer.hikari.util.DriverDataSource - Could not instantiate instance of driver class org.mariadb.jdbc.MySQLDataSource, trying JDBC URL resolution 
java.lang.ClassCastException: org.mariadb.jdbc.MySQLDataSource cannot be cast to java.sql.Driver 

我檢查,如果在我的項目中存在的類,它確實如此。我無法真正想到這個原因。

我對新來的Java很陌生,所以我不知道我是否在問題中提供了足夠的信息。如果情況並非如此,請說明。

+0

'DataSource'不是'Driver'。改用'setDataSourceClassName()'。 – Kayaman

+0

@Kayaman你可以把它變成答案嗎?謝謝。 –

回答

2

A DataSource不是Driver。使用setDataSourceClassName()來代替(我似乎記得無論如何都推薦使用setDriverClassName())。