我有一个简单的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);
但我正在
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)
从print语句中可以完美地访问属性值。当我直接用字符串值替换变量时,它可以正常工作!!
我应该何时使用
prop.load(new FileInputStream(System.getProperty(“dbconn.properties”)));
当我从mysql-connector jar文件中查看Driver类时,我希望看到一些静态代码,但没有找到任何内容。
答案 0 :(得分:1)
看起来该字符串的值为"com.mysql.jdbc.Driver"
(请注意双引号),而不是com.mysql.jdbc.Driver
。
删除这些引号,它应该有效。
答案 1 :(得分:0)
尝试修剪属性的值。
我会以静态的方式加载属性。
我不明白为什么你要看看这个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);
}
}