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

问题描述 投票:0回答:2

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

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

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

这是我的代码:

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());

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

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

我错过了什么?

java android jdbc ibm-midrange
2个回答
0
投票
驱动程序需要作为 jar 包含在您的项目中。如果您已经拥有它,请将其添加到项目的 /libs 文件夹中。

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


0
投票
我建议使用 IBM 的 JTOpen Lite/JTLite 库,而不是您尝试使用的库,它们是专门为在 Android 上使用而设计的。

欲了解更多信息,请参阅

我对相关问题的回答

© www.soinside.com 2019 - 2024. All rights reserved.