Eclipse 中運行 Java 程式連接 MySQL 拋出 ClassNotFoundException: org.gjt.mm.mysql.Driver,但命令列正常。原因在 Window → Preferences → Java → Installed JREs → Edit 中 未取消勾選 "Use default system libraries" 並手動加入驅動 JAR。
import java.sql.*;
public class MySQLTest {
public static void main(String[] args) {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/java_app?user=root&password=ss";
try {
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(url);
// ... 查詢邏輯
} catch (Exception e) { e.printStackTrace(); }
}
}
JDK lib 已放入 mysql-connector-java-3.1.1.jar,CLASSPATH 正確,命令列 java MySQLTest 成功,Eclipse Run 失敗。
Eclipse 專案運行配置使用 Workspace JRE 定義,而非系統環境變數。若 Installed JREs 仍勾選 "Use default system libraries",Eclipse 會忽略該 JRE 的 lib/ext 手動添加,導致驅動類別不可見。
mysql-connector-java-3.1.1.jar重新 Run 專案,連線成功,查詢結果正常輸出。
mysql:mysql-connector-java 依賴,IDE 自動同步,無需手動 JRE 設定.prefs 或使用工作區機制共享「環境在 IDE、不在機器」——理解 Eclipse JRE 隔離機制,能避免大量「命令列好、IDE 壞」的疑難雜症。