【问题标题】:Couldn't load class com.mysql.jdbc.Driver by class.forName("com.mysql.jdbc.Driver")无法通过 class.forName("com.mysql.jdbc.Driver") 加载类 com.mysql.jdbc.Driver
【发布时间】:2018-09-19 04:35:05
【问题描述】:

我正在做与 mySQL 数据库交互的简单 java 应用程序。它应该在 Ubuntu 服务器上运行。我正在 Intellij IDEA 中开发它,它在那里工作得很好。

但是,当我生成 jar 文件并在 Ubuntu 命令行中启动它(服务器和我的家用电脑都运行 ubuntu)时,没有任何效果。

我只需输入 java -jar %my_jar_filename% 并得到错误

"无法加载主类... Class.forName("com.mysql.jdbc.Driver")"

我知道自从java 5(我不确定这里是哪个版本,我使用8)以来,没有必要写它,但如果我不写它,我会得到

“找不到合适的驱动程序”

我搜索了这个问题,我找到的唯一解决方案是确保驱动程序确实存在于 PC 上并添加 Class.forName("");

这对我没有帮助。驱动程序存在,因为在 IDE 程序中起作用。我认为问题在于 java 选项。 我尝试通过java -cp添加mysql连接器,

但它给了我同样的错误,甚至试图通过 javac 从源代码在终端中编译程序,但也是同样的问题。 在我的 PC 上,mysql 连接器位于文件夹 usr/share/java/

应用程序最终应该运行的服务器具有相同的设置 我做错了什么?

**已解决:**谢谢大家 解决方案非常简单。这个答案帮助了https://stackoverflow.com/a/45303637/9184305

【问题讨论】:

  • 您创建的可运行包中可能缺少驱动程序 jar。通过查看罐子内部来检查。
  • @user1506104 不,因为在 IDE 标准连接数据库的方式中工作得很好,我想解决依赖而不是连接的问题

标签: java mysql


【解决方案1】:

这可能是因为您使用了错误的驱动程序 - 我们使用了这个类:

com.mysql.cj.jdbc.Driver

阅读您的描述,您可能还会遇到问题,即您的代码在 IDE 中运行,但当您尝试从 jar/命令行运行它时却没有。

在这种情况下,

  1. 您是如何创建 jar 的?
  2. 您是否将所有依赖项与 jar 一起部署?
  3. 您是否有一个 MANIFEST.MF 文件来指示您的 Main 类?

【讨论】:

  • 是的,我收到警告说 com.mysql.jdbc.Driver 已弃用并使用 cj,但没有帮助
  • 我通过点击 build ->artifacts 在 IntelliJ IDEA 中创建 jar
【解决方案2】:

这看起来像是类路径的问题,它可能没有 h jar 文件。我建议使用 maven 并创建 maven 项目并构建 jar 文件。 Maven 将处理依赖项和打包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2015-01-22
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多