0

単純な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:java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)の "com.mysql.jdbc.Driver"、java.net.URLClassLoaderのjava.security.AccessController.doPrivileged(ネイティブメソッド)。 findClass(URLClassLoader.java:190)at java.lang.ClassLoader.loadClass(ClassLoader.java:307)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)at java.lang.ClassLoader.loadClass(ClassLoader .java:248)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:169)at testapp.DBUpdater.initializeDB(Testapp.java:71)attestapp.Testapp。 main(Testapp.java:38)

printステートメントからわかるように、プロパティ値は完全にアクセスされます。変数を文字列値に直接置き換えると、正常に機能します。

  1. いつ使うべきか

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

  2. mysql-connector jarファイルからDriverクラスを表示したとき、静的コードが表示されることを期待していましたが、何も見つかりませんでした。

4

2 に答える 2

1

文字列には"com.mysql.jdbc.Driver"の代わりに値 (二重引用符に注意) があるようですcom.mysql.jdbc.Driver

それらの引用符を削除すると、機能するはずです。

于 2012-09-12T16:55:52.877 に答える
0
  1. プロパティの値を調整してみてください。

  2. プロパティを静的な方法でロードする必要がありました。

  3. なぜあなたがこの JAR を調べたのか理解できませんでした...

例:

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

}
于 2012-09-12T11:55:03.870 に答える