【问题标题】:java.lang.ClassNotFoundException: JDBC driver in Ubuntujava.lang.ClassNotFoundException:Ubuntu 中的 JDBC 驱动程序
【发布时间】:2014-11-21 22:09:15
【问题描述】:

当我想运行 .jar 文件时出现错误,.jar 文件需要 mysql jdbc 驱动程序,并且我在 mainfest 文件中添加了路径。但它不起作用。我相信这条路是对的。

这是我的清单文件:(MANIFEST.MF)

Manifest-Version: 1.0
Main-Class: com.project.beta.Main
Class-Path: mysql-connector-java-5.1.34.jar

这是错误:

Error - Problem with the MySQL server, error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 

我通过 Eclipse 在我的电脑上构建 jar 文件,并在我的 Ubuntu 服务器上运行该 jar 文件。

PS:我也用 -cp 试过了,但还是不行。

【问题讨论】:

  • 你是如何尝试-cp的?
  • 通过这个:java -cp /usr/share/java/mysql-connector-java-5.1.34 -jar /usr/share/map/program.jar
  • 我建议您构建一个包含所有依赖项的 jar(也称为 fat jar)。使用 Eclipse:Export -> Java -> Runnable Jar File。使用 -cp 也应该可以,但是创建一个胖 jar 是一个不错的方法 - 而且更容易。
  • 正如 bmargulies 所说,要么将 jdbc jar 放在删除所有类路径条目的工作目录中,然后使用 -cp 指定您需要的所有 jar,包括应用程序的 jar,并指定应用程序的主类.

标签: java jdbc classpath


【解决方案1】:

因为您的清单中有 mysql jar,如果您在 jar 文件上使用 java -jar 启动,Java 会将其添加到类路径中 - 但该 mysql jar 需要位于 java 的当前工作目录中找到它。它不会进一步搜索。您可以通过 -verbose 选项获得有关 Java 正在做什么的更多信息。

当您构建应用程序时,建议您开始使用完整的工具,例如 maven 或 ant。在每种情况下,您都可以添加一些工具来帮助您创建包装器 shell 脚本,以将内容添加到类路径并设置其他选项。

【讨论】:

  • 我现在删除了清单中的类路径 java -cp mysql-connector-java-5.1.34.jar -jar notif.jar ,这也不起作用。
  • -cp 和 -jar 不能一起使用。现在您需要在 mysql jar 路径名和 notif.jar 路径名之间使用冒号。除非是窗口,在这种情况下是半窗口。
  • 所以你的意思是:java -cp mysql-connector-5.1.34.jar : -jar notif.jar .. mysql jar 路径名和 notif.jar 路径名之间的冒号?
  • 冒号周围没有空格。有很多关于这一切的文档。
  • 并且没有 -jar。 java -cp mysql-connector-5.1.34.jar:notif.jar NameOfMainClass
猜你喜欢
  • 1970-01-01
  • 2013-08-12
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 2020-05-22
  • 2017-06-17
相关资源
最近更新 更多