找不到JDBC驱动程序

时间:2012-09-12 11:48:15

标签: java jdbc

我有一个简单的JDBC代码。

static Connection c;
static PreparedStatement ps;

public static void initializeDB() throws IOException, ClassNotFoundException, SQLException {
    Properties prop = new Properties();
    prop.load(new FileInputStream("dbconn.properties"));
    String connurl = prop.getProperty("connurl");
    String driver = prop.getProperty("driver");
    String username = prop.getProperty("username");
    String password = prop.getProperty("password");
    System.out.println(driver); //prints "com.mysql.jdbc.Driver"
    Class.forName(driver);
    c = DriverManager.getConnection(connurl, username, password);
  1. 但我正在

    java.lang.ClassNotFoundException:“com.mysql.jdbc.Driver”     在java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)     at java.security.AccessController.doPrivileged(Native Method)     在java.net.URLClassLoader.findClass(URLClassLoader.java:190)     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)     在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)     在java.lang.ClassLoader.loadClass(ClassLoader.java:248)     at java.lang.Class.forName0(Native Method)     at java.lang.Class.forName(Class.java:169)     在testapp.DBUpdater.initializeDB(Testapp.java:71)     在testapp.Testapp.main(Testapp.java:38)

  2. 从print语句中可以完美地访问属性值。当我直接用字符串值替换变量时,它可以正常工作!!

    1. 我应该何时使用

      prop.load(new FileInputStream(System.getProperty(“dbconn.properties”)));

    2. 当我从mysql-connector jar文件中查看Driver类时,我希望看到一些静态代码,但没有找到任何内容。

2 个答案:

答案 0 :(得分:1)

看起来该字符串的值为"com.mysql.jdbc.Driver"(请注意双引号),而不是com.mysql.jdbc.Driver

删除这些引号,它应该有效。

答案 1 :(得分:0)

  1. 尝试修剪属性的值。

  2. 我会以静态的方式加载属性。

  3. 我不明白为什么你要看看这个JAR ......

  4. 示例:

    class Database {
    
        private final static Properties properties;
        private static Connection c;
        private static PreparedStatement ps;
    
        static {
            properties = new Properties();
            properties.load(new FileInputStream("dbconn.properties"));
        }
    
        public static void init() {
            String connurl = properties.getProperty("connurl").trim();
            String driver = properties.getProperty("driver").trim();
            String username = properties.getProperty("username").trim();
            String password = properties.getProperty("password").trim();
            Class.forName(driver);
            c = DriverManager.getConnection(connurl, username, password);
        }
    
    }