【问题标题】:Error connecting to my database via ODBC when running from a .jar从 .jar 运行时通过 ODBC 连接到我的数据库时出错
【发布时间】:2016-12-14 10:28:37
【问题描述】:

我在运行 .jar 时无法连接到我的数据库,但如果我在 NetBeans 中运行我的项目,我可以做到。我正在使用 JDBC-ODBC 桥进行连接。这是我用于连接的功能。

public Statement connection(Statement st){
    try {
        // connection avec la base de donnée DataBase.
        // On charge le driver ODBC
        Properties props = new Properties();
        // pour pouvoir afficher les accents et les caractères spéciaux!!
        props.put ("charSet", "ISO-8859-15");
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        cnx = DriverManager.getConnection("jdbc:odbc:DataBase", props);
        st=cnx.createStatement();
        //JOptionPane.showMessageDialog(null,"connection ouverte avec     succès");
    }catch(Exception e)
    {
        System.out.println(e.getLocalizedMessage());
        return st;
    }
    return st;
}

示例图片:

【问题讨论】:

  • 在 Java 8 中删除了缓慢且有问题的 JDBC/ODBC 桥
  • 错误是什么?发布完整的堆栈跟踪,而不仅仅是 e.getLocalizedMessage()。请不要用法语。 :)
  • 尝试使用 e.printStackTrace() 显示堆栈跟踪并向我们显示异常的内容
  • 我想他想说的是,当他尝试运行他的 jar 文件时,他的应用程序被封装在一个 jar 文件中,然后应用程序无法连接到 MS Access 数据库,但是当他从 netbeans 项目运行他的应用程序时它成功连接到数据库,我认为他没有任何错误
  • @Sonor 我已经放了完整 StackTrace 的图像

标签: java ms-access jdbc jdbc-odbc


【解决方案1】:

当 Java 应用程序以 .jar 文件的形式分发给其他用户时,我们可能无法控制其运行所在的 Java 运行时环境 (JRE)。如果应用程序对 JRE 版本有特定要求,则应明确检查版本。

例如,使用 JDBC-ODBC 桥的应用程序必须在 Java 7 或更早版本下运行,因为该组件已从 Java 8 中删除。因此,应用程序代码应该执行以下操作:

int javaVersion = Integer.valueOf(
        System.getProperty("java.runtime.version").split("\\.")[1]);
if (javaVersion > 7) {
    System.out.printf(
            "This application is running under Java %d. " + 
            "Java 7 or earlier is required.%n", 
            javaVersion);
    System.exit(1);
}

java.com 现在默认分发 Java 8。大多数访问该网站并单击方便的“免费 Java 下载”按钮的用户几乎肯定会使用 Java 8(或更新版本)。如果应用程序不检查 Java 版本并愉快地尝试使用 JDBC-ODBC 桥,那么它将崩溃。

通过上述检查,用户将看到更有帮助的消息

C:\__tmp>java -jar JdbcOdbcTest.jar
This application is running under Java 8. Java 7 or earlier is required.

如果他们使用 Java 7 或更早版本的 JRE 运行它,它将正常工作:

C:\__tmp>"C:\Program Files\Java\jre6\bin\java" -jar JdbcOdbcTest.jar
Welcome to our app!

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2015-01-15
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多