[英]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.