无法通过class.forName(“ com.mysql.jdbc.Driver”)加载com.mysql.jdbc.Driver类

时间:2018-09-19 04:35:06

标签: java mysql

我正在做与MySQL数据库交互的简单Java应用程序。它应该在Ubuntu服务器上运行。我正在Intellij IDEA中开发它,并且在这里很好用。

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

我只需键入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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

com.mysql.cj.jdbc.Driver

在阅读您的描述时,您可能还会遇到这样的问题:您的代码可以在IDE中运行,但是当您尝试从jar /命令行运行它时却不能。

在这种情况下

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