java.lang.ClassNotFoundException:运行jar文件的Ubuntu上的com.mysql.jdbc.Driver

时间:2013-08-12 17:11:23

标签: java ubuntu jdbc ubuntu-12.04

我创建了一个连接MySQL的小型Java应用程序。我在我的本地机器上测试过,它工作正常。我使用Eclipse将Java项目导出到Runnable jar文件。

我在运行Ubuntu 12.04的服务器上复制了jar文件,并使用命令

运行它
java -jar server.jar

它抛出了错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)

我知道在服务器上找不到这个类。然后 - 我该如何安装这个驱动程序?

我在文件夹/ tvplan /中有所有内容 有一个server.jar文件导出为Runnable jar 还有一个文件夹lib,它包含mysql-connector-java.jar和libintl.jar(我都使用它们     sudo apt-get install libmysql-java ,但是当我跑     java -cp“lib / mysql-connector-java.jar; server.jar”服务器 它会给我一个错误     错误:无法找到或加载主类服务器

2 个答案:

答案 0 :(得分:1)

如果使用jar文件,则jar文件必须在清单中包含类路径行。该行指定要包含的库/类。您的罐子根本不会这样做,或者链接错误。

使用解压缩程序打开jar并打开清单文件以查看它是什么问题。

我怀疑您使用Eclipse的选项来包含库(但不提取或重新打包它们),因此它们被放置在jar文件之外的文件夹中,并且该文件夹不存在于linux机器上。 Eclipse导出器有3个关于库处理的选项,前2个将生成一个自包含的Jar。第一个选项将破坏mysql连接器上的许可协议,但第二个选项不会。第3个将把库放在你需要与你制作的jar一起复制的文件夹中。

答案 1 :(得分:-1)

使用cp的{​​{1}}选项将MySQL jdbc驱动程序放在类路径上,例如:

  

java -cp“.; lib / mysql-connector-java- version -bin.jar; server.jar” package.Server

如果您的jdbc驱动程序位于java目录下,并将 package.Server 替换为主类的完全限定名称。