我同意 f1sh 的观点,即您的代码看起来不错,并且您的代码中不需要 Class.forName() 行。我也同意选项 Platform Independent 是下载驱动程序时 Windows 操作系统的正确选择。
但是,很遗憾,您的屏幕截图没有显示您在 Libraries 节点下添加的驱动程序的文件扩展名。您能否确认文件的扩展名是 jar,而不是 zip 或 tar?
下载 MySQL 驱动程序会创建一个 zip 或 tar 文件(取决于您选择的选项),但您必须将其解压缩才能访问名为 的实际驱动程序>mysql-connector-java-8.0.13.jar,这是您必须添加到项目中的文件:
如果我包含 Class.forName() 调用,并将 zip 而不是 jar 添加到一个简单的测试项目中,我会在 NetBeans 中遇到与您完全相同的错误:
run:
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at jdbcselecttest.JdbcSelectTest.dbQuery(JdbcSelectTest.java:31)
at jdbcselecttest.JdbcSelectTest.main(JdbcSelectTest.java:25)
C:\Users\johndoe\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
值得注意的是,如果没有Class.forName() 调用,错误会更改为:
run:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/ebookshop?useSSL=false
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at jdbcselecttest.JdbcSelectTest.dbQuery(JdbcSelectTest.java:32)
at jdbcselecttest.JdbcSelectTest.main(JdbcSelectTest.java:25)
BUILD SUCCESSFUL (total time: 0 seconds)
如果我删除 zip 文件并添加 jar,文件一切正常。
如果您已经正确使用 jar 文件,那么还有更多选项可供探索,但这似乎是导致问题的最可能原因。