JDBC 驱动程序和终端类路径
JDBC driver and terminal classpath
我正在尝试连接到通过 linux 机器上的 mysql_workbench 创建的 sql 数据库。我目前使用文本编辑器通过终端进行编码,因为这让我感到很舒服。
我的 DatabaseConnection class 有以下代码,主要是 System.out.println
试图找出问题原因:
final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
final String DB_URL = "jdbc:mysql://localhost:3306/mydb";
final String user = "root";
final String pass = "pass";
Connection connection;
Statement statement;
public DatabaseConnection(){
}
public void connect(){
System.out.println("Entering method");
try {
System.out.println("Attempting to load driver");
Class.forName(JDBC_DRIVER);
System.out.println("Driver Loaded");
connection = DriverManager.getConnection(DB_URL, user, pass);
System.out.println("Connection established");
statement = connection.createStatement();
System.out.println(" statement made");
ResultSet resultSet = statement.executeQuery("show databases");
System.out.println("statement executed");
while(resultSet.next()){
System.out.println(resultSet.next());
}
System.out.println("finished printing result set");
statement.close();
} catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
} catch (SQLException sqle) {
System.out.println("Connection Error");
sqle.getErrorCode();
}
}
}
我还有一个 Test
class 来测试这个:
class Test {
public static void main(String[] args){
DatabaseConnection connection = new DatabaseConnection();
connection.connect();
}
}
当前,当 运行 在终端中使用它时,我的命令是:
javac -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test.java
(在我包含 .java 文件的顶级文件夹中,我有一个包含我的 jdbc 驱动程序的 lib 子文件夹)
编译正常。接下来我 运行 它使用
java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test
我收到以下错误:
java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test
Entering method
Attempting to load driver
Error: unable to load driver class!
所以看起来它没有在 Class.forName()
方法中加载驱动程序并且失败了。有人可以帮助解释原因和可能的解决方案吗?
在 mysql_workbench 中,我认为数据库已启动 运行ning,因为我可以在 workbench 查询命令行中查询它以显示数据库和表,这目前是空的。
Java 无法找到 MySQL JDBC 驱动程序的 JAR 文件,因为
中的 -cp
参数
java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test
指定两个(冒号分隔)位置:
.
/lib/mysql-connector-java-5.1.38-bin.jar
第二个位置被解释为绝对路径。要将其解释为 相对路径 它应该以句点 (.
) 开头,即
java -cp .:./lib/mysql-connector-java-5.1.38-bin.jar Test
我正在尝试连接到通过 linux 机器上的 mysql_workbench 创建的 sql 数据库。我目前使用文本编辑器通过终端进行编码,因为这让我感到很舒服。
我的 DatabaseConnection class 有以下代码,主要是 System.out.println
试图找出问题原因:
final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
final String DB_URL = "jdbc:mysql://localhost:3306/mydb";
final String user = "root";
final String pass = "pass";
Connection connection;
Statement statement;
public DatabaseConnection(){
}
public void connect(){
System.out.println("Entering method");
try {
System.out.println("Attempting to load driver");
Class.forName(JDBC_DRIVER);
System.out.println("Driver Loaded");
connection = DriverManager.getConnection(DB_URL, user, pass);
System.out.println("Connection established");
statement = connection.createStatement();
System.out.println(" statement made");
ResultSet resultSet = statement.executeQuery("show databases");
System.out.println("statement executed");
while(resultSet.next()){
System.out.println(resultSet.next());
}
System.out.println("finished printing result set");
statement.close();
} catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
} catch (SQLException sqle) {
System.out.println("Connection Error");
sqle.getErrorCode();
}
}
}
我还有一个 Test
class 来测试这个:
class Test {
public static void main(String[] args){
DatabaseConnection connection = new DatabaseConnection();
connection.connect();
}
}
当前,当 运行 在终端中使用它时,我的命令是:
javac -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test.java
(在我包含 .java 文件的顶级文件夹中,我有一个包含我的 jdbc 驱动程序的 lib 子文件夹)
编译正常。接下来我 运行 它使用
java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test
我收到以下错误:
java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test
Entering method
Attempting to load driver
Error: unable to load driver class!
所以看起来它没有在 Class.forName()
方法中加载驱动程序并且失败了。有人可以帮助解释原因和可能的解决方案吗?
在 mysql_workbench 中,我认为数据库已启动 运行ning,因为我可以在 workbench 查询命令行中查询它以显示数据库和表,这目前是空的。
Java 无法找到 MySQL JDBC 驱动程序的 JAR 文件,因为
中的-cp
参数
java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test
指定两个(冒号分隔)位置:
.
/lib/mysql-connector-java-5.1.38-bin.jar
第二个位置被解释为绝对路径。要将其解释为 相对路径 它应该以句点 (.
) 开头,即
java -cp .:./lib/mysql-connector-java-5.1.38-bin.jar Test