繁体   English   中英

无法加载 jdbc 驱动程序 (ClassNotFoundException)

[英]cannot load jdbc driver (ClassNotFoundException)

我正在尝试加载 JDBC 驱动程序以对我的 AS400 进行一些 SQL 调用。 我尝试在安装了 JDBC 的计算机上运行连接,并且 URL 和 SQL 调用工作正常。

我需要开发一个没有安装驱动程序的应用程序(目前适用于 Android,尽管我们正在寻求扩展到桌面应用程序)。 我正在实际的 android 设备上测试代码,而不是模拟器,因此它具有完整的互联网权限。

IBM 所述, jt400 的驱动程序位于 com.ibm.as400.access.AS400JDBCDriver 中。

这是我的代码:

    try {

        Class.forName("com.ibm.as400.access.AS400JDBCDriver").newInstance();
        Connection conn = DriverManager.getConnection(
                url + schema + ";naming=sql;errors=full",
                uname,
                psswrd);

        // do SQL query stuff

        rs.close();
        stmt.close();
        conn.close();

    } 
    catch (ClassNotFoundException e)
    {
        this.basicOutput.setText("Class not found: " + e.getMessage());
        System.out.println(e.getStackTrace());
    }
    //catch (SQLException e)
    catch (Exception e)  //need generic to catch all errors thrown
    {

        this.basicOutput.setText(e.getMessage());
        System.out.println(e.getStackTrace());

    }

当我运行它时,我得到一个“找不到类:com.ibm.as400.access.AS400JDBCDriver”。

我做了一些研究,它表明 Class.forName 不是一个好方法。 所以我也尝试了这个:

        DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());

但这也会产生同样的错误。

课堂在那里。 编译后的代码不会抛出任何语法错误,但由于某种原因,运行时找不到它。

我错过了什么?

驱动程序需要作为 jar 包含在您的项目中。 如果您已经拥有它,请将其添加到文件夹 /libs 中的项目中。

您将驱动程序类指定为字符串文字,因此在编译期间它通过并且您认为一切都很好。 但是,在运行时它需要找到它,并且因为您没有包含它不能包含的 jar。

我建议您使用 IBM 的 JTOpen Lite/JTLite 库,而不是您尝试使用的库,这些库专为在 Android 上使用而设计。

有关更多信息,请参阅我对相关问题的回答

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM