簡體   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