我在将MySQL连接到Java时遇到问题。我尚未找到Windows驱动程序,并被告知选择独立于平台的驱动程序。 我正在使用NetBeans ide 8.2和MySQL服务器8.0.13和MySQL Workbench 8.0.13,我试图下载旧版本的驱动程序以查看其是否有效,但结果相同:
java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Driver
我运行时记录未显示在输出中
我错过了什么吗?除了将驱动程序添加到NetBeans中的库并编写连接代码之外,我还需要做其他事情吗?请帮助我,我是新手,我需要帮助。谢谢
this is the table in MySQL
this is the connection code in NetBeans
答案 0 :(得分:0)
我同意 f1sh ,您的代码看起来不错,而且您的代码中不需要Class.forName()
行。我也同意,在下载驱动程序时,选项与平台无关是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 文件,则可以探索更多选项,但这似乎是造成问题的最可能原因。