从Windows命令提示符运行带有Access数据库的Java应用程序

时间:2016-01-27 23:38:27

标签: java ms-access netbeans jdbc-odbc

我使用Netbeans V6.1开发了一个Windows MS Access Java应用程序。在IDE中一切正常,包括将MS Access数据加载到jTable中。当我从Windows命令行运行它时,应用程序启动但数据未加载到jTable中。相反,我得到了错误页面,但前几个是:

java -jar doactions.jar
Picked up _JAVA_OPTIONS: -Xmx512M
Jan 28, 2016 12:22:21 AM doactions.DoActionsView <init>
SEVERE: null
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

doActions是应用,DoActionsView是jTable所在的位置。似乎构建没有看到ODBC管理器中定义的MS Access数据库。任何人都可以提供任何帮助吗?

3 个答案:

答案 0 :(得分:0)

您需要确保JDBC ODBC驱动程序jar位于类路径中。

答案 1 :(得分:0)

很抱歉,我没有看到Gord Thompson提出的问题。

Java whch的版本显示在java提示符下,应用程序的运行时版本是1.8.0_45,但Netbeans IDE的版本是1.6.0_45。我假设我已经以某种方式安装了不同版本的运行时java和JDK。由于Netbeans很乐意运行1.6版本,我将首先重新安装运行时1.6版本以查看是否可以解决问题。

我的笔记本电脑上安装了两个版本的Java。我现在已经删除了1.8版本,一切正常。非常感谢

劳伦斯

答案 2 :(得分:0)

从命令提示符启动应用程序时,它在Java 8(1.8.0_45)JVM(Java虚拟机)下运行,在NetBeans中运行应用程序时,它在Java 6(1.6.0_45)下运行。这解释了差异。

命令提示符调用在向操作系统注册的Java运行时环境(JRE)下运行。当您从java.com下载JRE时,Oracle目前正在分发Java 8.

NetBeans在Java 6下运行相同的应用程序,因为它使用的是Java 6 JDK(Java Development Kit)。 NetBeans从JDK启动其Java环境,而不是独立的JRE。

至于为什么应用程序可以在Java 6下运行并且在Java 8下失败,JDBC-ODBC Bridge已从Java 8中删除并且不再可用。有关 使用Java 8的替代方法,请参阅

Manipulating an Access database from Java without ODBC