首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UcanaccessDriver引发的ExceptionInInitializerError : java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver

问UcanaccessDriver引发的ExceptionInInitializerError : java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
EN

Stack Overflow用户
提问于 2014-10-04 18:30:42
回答 1查看 2.1K关注 0票数 1

我检查了所有可能的地方,包括这个页面,但是我在Netbeans 8和Ucanaccess上不断出现奇怪的错误。

这是我首先做的。导入org-apache-Common-logging.jar,ucanaccess-2.0.9.jar,commons-lang-2.6.jar,hsqldb.jar,jackcess-2.0.4.jar作为新的驱动程序。

在Netbeans中的选项下设置类路径(添加了ucanaccess.zip文件)

代码语言:javascript
复制
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());
}
}

这就是我一直在犯的错误:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2014-10-04 19:18:40

异常起源于net.ucanaccess.jdbc.UcanaccessDriver的类初始化程序。

原因:org.hsqldb.jdbc.JDBCDriver:java.lang.RuntimeException

根据UCanAccess站点,UCanAccess依赖于HSQLDBC:

依赖关系 UCanAccess 2.x.x需要(至少)类路径中的以下依赖项:

  • -2.0.JAR或更高版本的
    • commons-lang-2.4.jar
    • commons-logging-1.0.4.jar

​

  • hsqldb.jar(2.2.5)

您可能还没有在应用程序的类路径中包含HSQLDB库。在Netbeans中定义驱动程序纯粹是为了在Netbeans中使用驱动程序,而不是用于应用程序的类路径。

正如戈德?汤普森在下面的评论中所提到的,关于设置UCanAccess的解释可以在以下问题中找到:在不使用ODBC的情况下从Java操作Access数据库。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26195865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档