-1

我创建了连接到 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" Server bt 时,它会抛出一个错误 Error: Could not find or load main class Server

4

2 回答 2

1

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

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

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

于 2013-08-12T17:25:46.907 回答
-1

使用cp选项java将 MySQL jdbc 驱动程序放在类路径中,例如:

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

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

于 2013-08-12T17:19:12.327 回答