java - 使用 JDBC 连接到 Mysql 时出现 ClassNotFoundException

标签 java mysql jdbc

当我尝试在命令行运行一个简单的 Java JDBC 程序时出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: LoadDriver/java
Caused by: java.lang.ClassNotFoundException: LoadDriver.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

这是直接从 JDBC 文档中复制的简单 Java 程序:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// Notice, do not import com.mysql.jdbc.*
// or you will have problems!
public class LoadDriver {
    public static void main(String[] args) {
        try {
            // The newInstance() call is a work around for some
            // broken Java implementations
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception ex) {
        throw ex;
            // handle the error
        }
    }
}

问题是,我非常确定我的 bash shell $ClASSPATH 变量指向正确的 .jar 文件。可以肯定的是,我将 JDBC .jar 复制到与我的程序相同的目录并按如下方式运行:

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 

我仍然得到同样的错误。

编辑:

我遵循了 Powerlord 下面的建议,现在我仍然遇到几乎相同的异常。

我输入了:

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 
java LoadDriver

我是否在第二个命令上保留类路径标志似乎无关紧要。我仍然得到:

Exception in thread "main" java.lang.NoClassDefFoundError: LoadDriver
Caused by: java.lang.ClassNotFoundException: LoadDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

最佳答案

我认为您的语法在这里是错误的。您是否已经使用以下方法编译了 LoadDriver.java:

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java ?

如果是这样,那么你应该能够做到:

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver  

(请注意,我删除了末尾的“.java”)

关于java - 使用 JDBC 连接到 Mysql 时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526048/

相关文章:

PHP:mysql_connect() 返回 true 但 mysql_select_db() 返回 false _ 在 Ubuntu 更新后

php - 一小部分 PHP/mysql 代码确实如此。不知道为什么

java - 哪些数据库可以与java一起使用?

java - 将数据插入 H2 数据库表

java - 使用准备好的语句的动态列名 + 包含变量的 sql 查询

Java8 LocalDate 解析异常

java - 禁用/覆盖 JTree 鼠标按下/单击处理的正确方法

mysql - 左连接对多列性能的影响?

java - 如何到达 TextArea 的末尾

java - 更新 Gradle 引用以包含 Maven 本地 jar(libGDX 和 Tween 引擎)