当前位置: 首页 > 知识库问答 >
问题:

Java:无法为EmbeddedDerby加载JDBC驱动程序

壤驷升
2023-03-14

我在为Em申明德比加载JDBC驱动程序时遇到了问题。以下是我编译和运行我的程序的案例

>

  • 案例1:

    编译:E:\java\WorkReminder

    Run: E:\java\WorkReminder

    错误:

    无法加载JDBC驱动程序org . Apache . derby . JDBC . embedded driver。请检查您的类路径。Java . lang . classnotfoundexception:org . Apache . derby . JDBC . embedded driver at Java . net . URL class loader $ 1 . run(URL class loader . Java:200)at Java . security . access controller . doprivileged(Native Method)at Java . net . URL class loader . Java:188)at Java . lang . class loader . load class(class loader . Java:306)at sun . misc . launcher $ app class loader . load class(launcher . Java:268)at

    案例2:如果我这样做,一切都很好

    编译:E:\java\WorkReminder

    更改目录:E:\java\WorkReminder

    Run: E:\java\WorkReminder\class

    输出:

    已加载适当的驱动程序

    已插入行。

    2-----

    1956年________ _____________河内

    1975年_________ _____________西贡

    SimpleApp已完成

    有人可以帮我解释为什么我在案例 1 中出现错误,因为我正在编写更复杂的程序?我的代码:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.Properties;
    
    public class MyDerbyProgram
    {
        /* the default framework is embedded*/
        private String framework = "embedded";
        private String driver = "org.apache.derby.jdbc.EmbeddedDriver";
        private String protocol = "jdbc:derby:";
    
        public static void main(String[] args)
        {
            new MyDerbyProgram().go(args);
            System.out.println("SimpleApp finished");
        }
    
        void go(String[] args)
        {
            /* load the desired JDBC driver */
            loadDriver();
            try
            {
                Connection connection = DriverManager.getConnection(protocol + "testDB; create=true");
                connection.setAutoCommit(false);
    
    
                //Create table
                Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                statement.execute("create table location(num int, address varchar(40))");
    
                //Insert
                PreparedStatement psInsertStatement = connection.prepareStatement("insert into location values(?, ?)");
                psInsertStatement.setInt(1, 1956);
                psInsertStatement.setString(2, "Ha Noi");
                psInsertStatement.executeUpdate();
                psInsertStatement.setInt(1, 1975);
                psInsertStatement.setString(2, "Sai Gon");
                psInsertStatement.executeUpdate();
                System.out.println("Row inserted.");
    
                //Select
                ResultSet resultSet = statement.executeQuery("select * from location");
    
                int totalRows = 0;
    
                resultSet.last();
                totalRows = resultSet.getRow();
                resultSet.beforeFirst();
                System.out.println(totalRows + "-----");
    
                String strPrintResult = "";
                while(resultSet.next())
                {
                    strPrintResult += resultSet.getString("num") + "___________________+_________________________" + resultSet.getString("address") + "\n";
                }           
                System.out.println(strPrintResult);
    
                //Drop table
                statement.execute("drop table location");
    
                //Commit transaction
                connection.commit();
    
                //Close
                statement.close();
                statement = null;
    
                psInsertStatement.close();
                psInsertStatement = null;
    
                resultSet.close();
                resultSet = null;
    
                connection.close();
                connection = null;
            }
    
            catch(SQLException se)
            {
                System.out.println(se.toString());
            }
        }
    
        private void loadDriver() {
        try {
            Class.forName(driver).newInstance();
            System.out.println("Loaded the appropriate driver");
        } catch (ClassNotFoundException cnfe) {
            System.err.println("\nUnable to load the JDBC driver " + driver);
            System.err.println("Please check your CLASSPATH.");
            cnfe.printStackTrace(System.err);
        } catch (InstantiationException ie) {
            System.err.println(
                        "\nUnable to instantiate the JDBC driver " + driver);
            ie.printStackTrace(System.err);
        } catch (IllegalAccessException iae) {
            System.err.println(
                        "\nNot allowed to access the JDBC driver " + driver);
            iae.printStackTrace(System.err);
        }
        }
        private void parseArguments(String[] args)
        {
            if (args.length > 0) {
                if (args[0].equalsIgnoreCase("derbyclient"))
                {
                    framework = "derbyclient";
                    driver = "org.apache.derby.jdbc.ClientDriver";
                    protocol = "jdbc:derby://localhost:1527/";
                }
            }
        }
    }
    

    问候

  • 共有1个答案

    苍嘉澍
    2023-03-14

    -cp 选项设置类路径,您不需要这个

    请看这里

     类似资料:
    • 问题内容: 我在春季配置了一个netezza db。我在类路径中添加了依赖的nzjdbc.jar 春季配置: 问题答案: 将放入您的本地Maven存储库 (在该目录执行这个位于 然后像正常依赖项一样使用它: @请参阅安装第三方JAR的指南

    • 我正在上使用。我试图弄明白如何使用数据导入从加载数据。但我最终无法加载JDBC驱动程序类。以下是我所做的: 把放到 1.配置: 2.配置: 在

    • 问题内容: 我已经在两周前创建了一个程序(+ ),现在它在加载JDBC驱动程序时遇到了问题(到目前为止还没有发生)。因此,我的文件如下所示: 看来这个文件很清楚。但是,在我尝试创建bean 时无法加载JDBC驱动程序的主要问题是什么。 其它文件: 数据源文件 属性文件 错误: 任何人? 提前致谢 问题答案: 摆脱财产的尽头 Spring使用反射和该属性的值通过完全限定的类名加载实例。没有所谓的班级

    • 我正在运行以下代码,但是我得到了关于Oracle类名称的错误。我已经用oracle jar文件设置了classpath环境变量,但它不起作用。有人能帮我吗?我不知道还能做什么。我真的很感谢你的帮助 这就是错误:由:java引起。sql。SQLException:无法加载JDBC驱动程序类“oracle”。jdbc。驾驶员OracleDriver's

    • 问题内容: 有人告诉我,加载JDBC驱动程序的首选方法是: 我知道,这对于从XML配置文件或用户输入中读取多个驱动程序之间的动态决策更好。我很好奇的是,调用此语句如何将指定的驱动程序加载到我们什至没有将生成的“ Class”对象存储在任何地方的环境中。JavaDocs条目说: 返回与具有给定字符串名称的类或接口关联的Class对象 在那种情况下,Java开发人员仅凭此语句如何设法促进驱动程序对象的

    • 即使驱动程序类名已定义,我也会收到此错误 Java语言lang.IllegalStateException:无法加载驱动程序类:com。mysql。jdbc。组织的驱动程序。springframework。util。明确肯定state(Assert.java:392)~[spring-core-4.2.1.RELEASE.jar:4.2.1.RELEASE]位于org。springframewor