gpt4 book ai didi

java - Maven - java.lang.ClassNotFoundException : com. mysql.jdbc.Driver

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:34 24 4
gpt4 key购买 nike

我有一个基于 Maven 的 Java 应用程序,想要连接到 MySQL 服务器。

我的 pom 有:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
<type>jar</type>
<scope>runtime</scope>
</dependency>

使用运行时,因为我想在运行时连接到MySQL服务器 - 也尝试过编译和提供,但不起作用。

SQL 代码是标准的:

String dbClass = "com.mysql.jdbc.Driver";

Class.forName(dbClass);
Connection connection = DriverManager.getConnection(dbUrl,
username, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
String tableName = resultSet.getString(1);
System.out.println("Table name : " + tableName);
}

当我从 Eclipse 运行此程序时,它工作正常并打印表名称。

但是,在 maven 中,运行 mvn clean install 后通过 >java -jar target\File.jar 执行生成的 SNAPSHOT 时总是会出现错误。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

为了使 Maven 构建正常工作,我缺少什么?运行 mvn clean install 不会出现错误并且构建正常。仅当执行 SNAPSHOT exe 时才会发生错误。

MySQL jar 在我的 .m2 存储库中,我尝试通过 mvn 命令行显式添加它,但说它已经存在。

最佳答案

将范围更改为编译:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

这 - 因为它是默认范围,所以相当于完全放弃范围定义 - 类型的计数相同:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>

看看这个:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html有关范围界定的详细信息。

以下是您背景的快速信息:

您指定 JDBC 驱动程序具有运行时范围。大多数 IDE 无论如何都会忽略作用域,并将所有依赖项添加到它们的类路径中(例如,当您在 Eclipse 之外运行某些内容时使用的类路径)。通过作用域 runtime,您告诉 Maven 它不能将该依赖项打包到最终的 jar 中,因为执行环境将“在 运行时 提供该依赖项。例如,您必须在调用 jar 时手动将其添加到类路径,或者将作用域更改为 compile 这将导致驱动程序 jar 被打包到您的 jar 中并在运行时可用。

关于java - Maven - java.lang.ClassNotFoundException : com. mysql.jdbc.Driver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52393365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com