java - 当jar存在时出现NoClassDefFoundError,特别是对于mysql-connector-java-8.0.20.jar

标签 java javac mysql-connector

我想确保我可以使用一个简单的 Java 类连接到本地运行的 MySQL 服务器。

要测试连接,我想使用 MysqlDataSource mysql-connector-java-8.0.20.jar 附带的类

我使用的是 Ubuntu 18.04 LTS,jar 位于:/usr/share/java/mysql-connector-java-8.0.20.jar

然后我运行编译器命令:$ javac -cp "/usr/share/java/mysql-connector-java-8.0.20.jar" App.java

然后:$ java App

并得到以下输出错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/mysql/cj/jdbc/MysqlDataSource
        at App.main(App.java:15)...

$ mysql --version的输出: mysql Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using EditLine wrapper

这就是我的全部App.java文件包含:

import java.sql.Connection;
import java.sql.SQLException;

import com.mysql.cj.jdbc.MysqlDataSource;

public class App {
    public static void main(String[] args) {

        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setUser("root");
        dataSource.setPassword("test");
        dataSource.setServerName("localhost");

        Connection conn;
        try {
            conn = dataSource.getConnection();
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }    
}```


最佳答案

您必须指定一个类路径以在运行时包含 jar,而不是 java App。就像,

java -cp "/usr/share/java/mysql-connector-java-8.0.20.jar:." App

关于java - 当jar存在时出现NoClassDefFoundError,特别是对于mysql-connector-java-8.0.20.jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61903307/

相关文章:

Java 编译多个包中的 RMI 服务器/客户端应用程序

ms-access - ODBC 机器 DSN 设置存储在 Windows 中的什么位置?

java - 如何在 Java 6 中捕获所有已检查的异常(在一个 block 中)?

java - 如何在不添加Remote的情况下将提交推送到git存储库?

java - 将 xml 存储到 xml 属性中

java -jar 和 cf -e 不适用于 Java 14

java - OpenGL 过滤参数和 mipmap

Javac 未与 openjdk-6-jdk 一起安装

Java JDBC : Cannot connect to SQL due to unknown database

c# - 无效的阅读尝试 - 可以使用 Action 吗?