我一直在尝试创建一个新项目以使用UCanAccess读取MS Access文件。我一直在关注@Gord
Thompson的信息以及github中的UCanAccess示例文件。除了我使用不同名称的事实外,每件事都是相同的。我不使用任何GUI
IDE。我只是从命令行进行编译,基本上,我编写了一个执行命令行编译的Java程序。
参考文献:
在不使用ODBC的情况下从Java操作Access数据库
https://github.com/andrew-
nguyen/ucanaccess/blob/master/example/net/ucanaccess/example/Example.java
我的代码示例如下:
String path = new java.io.File(PATH).getAbsolutePath();
db = "jdbc:ucanaccess://" + path;
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn = DriverManager.getConnection( db );
Statement s = conn.createStatement();
我的错误消息是:
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at GreatBeyond.<init>(GreatBeyond.java:36)
at GreatBeyond.main(GreatBeyond.java:66)
Caused by: java.lang.RuntimeException: org.hsqldb.jdbc.JDBCDriver
at net.ucanaccess.jdbc.UcanaccessDriver.<clinit>(UcanaccessDriver.java:54)
... 4 more
第36行是“Class.forName”,我尝试用它来运行程序,但它失败了。我已经下载了UCanAccess的zip文件,并将其解压缩到com目录,而Jackcess被解压缩到了net目录。谁能指出出什么问题了?
如果不使用IDE,则需要为UcanAccess的JAR文件及其所有依赖项(HSQLDB,Jackcess等)指定CLASSPATH条目。一种方法是在运行代码时使用命令的-cp
选项java
。
例如,在“ UcaNoIde.java”中编译以下代码后,…
import java.sql.*;
public class UcaNoIde {
public static void main(String[] args) {
String dbFileSpec = "C:/Users/Public/UCanAccessTest.accdb";
String connStr = "jdbc:ucanaccess://" + dbFileSpec;
try (Connection conn = DriverManager.getConnection(connStr)) {
System.out.println("Connection established.");
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}
…进入“ UcaNoIde.class”文件,我可以在Windows命令提示符下使用以下命令运行它:
java -cp .;C:/Users/Public/Downloads/UCanAccess/ucanaccess-3.0.3.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-lang-2.6.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-logging-1.1.1.jar;C:/Users/Public/Downloads/UCanAccess/lib/hsqldb.jar;C:/Users/Public/Downloads/UCanAccess/lib/jackcess-2.1.3.jar UcaNoIde
(对于Linux 等 ,-cp
条目将用冒号(:
)而不是分号(;
)分隔,并且文件路径将有所不同。)
另一种可能性是使用与上述-cp
选项相同的条目来定义CLASSPATH环境变量,因此您不必-cp
每次都使用。
问题内容: 我想在Eclipse中编译我的Java程序,但不想运行它。我不知道该怎么做。 如何在不运行Eclipse的情况下将Java程序编译为文件? 问题答案: 您可以在项目菜单中自动取消选中构建,然后通过按Ctrl + B或单击打印机图标右侧出现的图标手动构建。
问题内容: 我对Swift类有疑问。我有一个UITableViewController类和UITableViewCell类的快捷文件。我的问题是UITableViewCell类和插座。此类存在错误 类别“ HomeCell”没有初始化程序 ,并且我不理解此问题。 感谢您的回复。 问题答案: 您必须使用隐式展开的可选变量,以便Swift可以在初始化阶段处理循环依赖关系(在这种情况下,UI组件的父级<
文档说这个库运行在GPU上。如果我功能强大的笔记本电脑没有GPU,我还能运行Deeplearning4J吗?
我刚刚通过nodejs.org上的软件包安装了node和npm,每当我试图搜索或安装npm时,它都会抛出以下错误,除非我执行该命令。我觉得这是一个权限问题?我已经是管理员了。
我已经安装了Android SDK最新版本和Eclipse。但我也想试试Android Studio。 我看过这个和这个帖子,但是那些解决方案改变了Android Studio(一旦下载并安装)使用的SDK实例。我想要的不是下载另一个SDK,当我已经在我的机器上安装了它。
问题内容: 有人建议可以怎一个JAVA程序运行不写一个主要方法.. 例如: 不使用类中的公共静态void main(String arg []),如何在控制台上打印以上行。 问题答案: 直到JDK6,您都可以使用静态初始化程序块来打印消息。这样,一旦您的班级被加载,消息就会被打印出来。然后,技巧就变成了使用另一个程序来加载您的类。 当然,您可以按如下方式运行程序,您将看到消息;但是,该命令也会失败