[英]JDBC driver - ClassNotFoundException, NetBeans
我進行了大量搜索,並花了很多時間嘗試注冊JDBC驅動程序。
首先,我將我的ojdbc7.jar文件(從Oracle下載)復制到如下所示的目錄中:
Driver File(s): /Users/Kamil/glassfish4/jdk7/jre/lib/ext/ojdbc7.jar
Driver Class: oracle.jdbc.OracleDriver
// this is copied from Services/Databases/Drivers/ojdbc
然后,我嘗試了以下代碼:
try {
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(myDriver);
} catch (ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
... 還有這個:
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
...並以這行代替:
Class.forName("oracle.jdbc.driver.OracleDriver");
我總是得到ClassNotFoundException :(
這是我嘗試運行的代碼:
Connection DBconn;
String USER = "root";
String PASS = "root";
System.out.println("Connecting to database...");
DBconn = DriverManager.getConnection("mysql://localhost:3306/RestToolDatabase", USER, PASS);
System.out.println("Creating statement...");
Statement stmt = DBconn.createStatement();
String sql;
sql = "select surname, id, age\n"
+ "from customers \n"
+ "where name = \"maria\" \n"
+ "order by id;";
ResultSet rs = stmt.executeQuery(sql);
我還閱讀了有關按如下所述設置類路徑的信息 :
在“編譯”選項卡下-單擊“添加Jar /文件夾”按鈕。
但是NetBeans中沒有“屬性/庫”選項。
我使用Maven,並且某些庫添加了以下依賴項:
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
<type>pom</type>
</dependency>
也許有一些解決方法,或者其他自動添加方法? 它應該很簡單,但是我沒有經驗,在此上浪費了很多時間。 請幫忙。
編輯 :謝謝您的答復,是的,我在localhost:3306 [root]使用MySQL Server。 我在這里安裝了MySQL JDBC連接器:
/Applications/NetBeans/NetBeans 8.0.app/Contents/Resources/NetBeans/ide/modules/ext/mysql-connector-java-5.1.23-bin.jar
當我轉到“服務”->“驅動程序”->“ MySQL(連接器/ J驅動程序)”時,完全有您建議的驅動程序類路徑,因此我使用Class.forName(“ com.mysql.jdbc.Driver ”)。 我右鍵單擊“ MySQL(連接器/ J驅動程序)”驅動程序,然后轉到“連接使用...”->“本地主機,端口3306,用戶,密碼”。 現在已連接,我看到了新的連接。 但是我仍然得到ClassNotFoundException。
我在pom.xml中的依賴項中添加了以下內容:
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.23</version>
</dependency>
...並構建應用程序; 驅動程序已下載並安裝。 就這么簡單...我花了很多時間在它上...有效-是的! :)
您在MySQL數據庫上使用Oracle JDBC驅動程序時,應使用
Class.forName("com.mysql.jdbc.Driver");
編輯:感謝@duffymo和@ Mark-Rotteveel的評論,他們注意到連接的URL也是錯誤的,正確的連接是:
Connection DBconn;
String USER = "root";
String PASS = "root";
DBconn = DriverManager.getConnection("jdbc:mysql://localhost:3306/RestToolDatabase?" + "user="+USER+"&password="+PASS);
設置類路徑:
並在'dist'中打包具有相對路徑的依賴庫:
我認為JDBC JAR不屬於該目錄。 CNF異常支持我。
我建議將該JAR放到您的項目WEB-INF / lib中,重新打包WAR,然后重試。
這行是正確的:
Class.forName("oracle.jdbc.driver.OracleDriver");
完整的類名必須與JAR中的類名匹配。 這是唯一的方法。
您必須使用與數據庫匹配的驅動程序:Oracle for Oracle,MySQL for MySQL。 您正在使用什么數據庫?
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.23</version>
這對我有用。 由於Netbeans apache中沒有屬性和庫。 祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.