我创建了一个连接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”服务器 它会给我一个错误 错误:无法找到或加载主类服务器
答案 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 替换为主类的完全限定名称。