UcanaccessDriver引发ExceptionInInitializerError原因:java.lang.RuntimeException:org.hsqldb.jdbc.JDBCDriver [英] UcanaccessDriver throws ExceptionInInitializerError Caused by: java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
问题描述
我在所有可能的地方都进行了检查,包括该页面,但在Netbeans 8和Ucanaccess上我一直收到奇怪的错误消息.
I checked everywhere i could and including this page but i keep getting weird error on Netbeans 8 and Ucanaccess.
这是我首先要做的.导入了org-apache-commons-logging.jar,ucanaccess-2.0.9.jar,commons-lang-2.6.jar,hsqldb.jar,jackcess-2.0.4.jar作为新驱动程序.
Here is what i did first. Imported org-apache-commons-logging.jar, ucanaccess-2.0.9.jar, commons-lang-2.6.jar, hsqldb.jar, jackcess-2.0.4.jar as a new driver.
在Netbeans中的选项下设置类路径(添加了ucanaccess.zip文件)
Set the class path under options in Netbeans (added the ucanaccess.zip file)
import sun.jdbc.odbc.JdbcOdbcDriver;
import net.ucanaccess.jdbc.UcanaccessDriver;
import java.sql.*;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JavaApplication7 {
static final String JDBC_DRIVER = "net.ucanaccess.jdbc.UcanaccessDriver";
static final String DB_URL = "jdbc:ucanaccess://C:\\Users\\Magneto\\Documents\\Database1.mdb";
static final String USER = "";
static final String PASS = "";
static final Scanner in = new Scanner(System.in);
//insert data variables
public JavaApplication7() throws SQLException {
}
public static void main(String[] args){
// databaseForm dbf = new databaseForm();
// dbf.setVisible(true);
getDatabase();
}
public static void connectToDatabase()
{
try{
System.out.println("Connection Successfull");
System.out.println("----------------------------------------------");
}
catch(Exception e)
{
}
}
public static void getDatabase()
{
try {
Class.forName(JDBC_DRIVER);
Statement statement = null;
Connection con = DriverManager.getConnection(DB_URL, "", "");
//execute a query
statement = con.createStatement();
String sql = "Select id, FirstName, LastName FROM PhoneBook";
ResultSet rs = statement.executeQuery(sql);
//pull database
while(rs.next())
{
int id = rs.getInt("id");
String FirstName = rs.getString("FirstName");
String LastName = rs.getString("LastName");
System.out.println("id " + id + " FirstName " + FirstName + " LastName " + LastName);
}
rs.close();
con.close();
} catch (Exception ex) {
System.out.println("Got an Exception!");
System.err.println(ex.getMessage());
}
}
这是我不断得到的错误:
And here is the error I keep getting:
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:188)
at javaapplication7.JavaApplication7.getDatabase(JavaApplication7.java:54)
at javaapplication7.JavaApplication7.main(JavaApplication7.java:34)
Caused by: java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
at net.ucanaccess.jdbc.UcanaccessDriver.<clinit>(UcanaccessDriver.java:56)
... 4 more
Java结果:1
推荐答案
该异常起源于net.ucanaccess.jdbc.UcanaccessDriver
的类初始化程序:
The exception originates in the class initializer of net.ucanaccess.jdbc.UcanaccessDriver
:
原因:java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
根据 UCanAccess网站,UCanAccess取决于HSQLDBC:
According to the UCanAccess site, UCanAccess depends on HSQLDBC:
依赖项
UCanAccess 2.x.x(至少)在类路径中需要以下依赖项:
Dependencies
UCanAccess 2.x.x requires (at least) the following dependencies in your classpath:
- jackcess-2.0.0.jar或更高版本
- commons-lang-2.4.jar
- commons-logging-1.0.4.jar
- jackcess-2.0.0.jar or later
- commons-lang-2.4.jar
- commons-logging-1.0.4.jar
您可能尚未在应用程序的类路径中包含HSQLDB库.在Netbeans中定义驱动程序纯粹是为了在Netbeans中使用该驱动程序,而不是用于应用程序的类路径.
You probably haven't included the HSQLDB library on the classpath of the application. Defining a driver in Netbeans is purely for use of the driver in Netbeans, not for the classpath of an application.
如以下评论中的Gord Thompson所述,可以在以下问题中找到有关设置UCanAccess的说明:
As mentioned by Gord Thompson in the comment below, an explanation of setting up UCanAccess can be found in this question: Manipulating an Access database from Java without ODBC
这篇关于UcanaccessDriver引发ExceptionInInitializerError原因:java.lang.RuntimeException:org.hsqldb.jdbc.JDBCDriver的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!