java 程序打包成jar文件后 连接数据库出错

yeshiou 2009-02-19 11:52:31
我把编好的java程序打包成.jar文件后,执行.jar文件出错
我用的是MySQL数据库,在打包之前程序可以正常运行,但是在运行.jar文件时,出现下面的错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at onlyfun.caterpillar.SimpleDBSource.<init>(SimpleDBSource.java:28)
at onlyfun.caterpillar.SimpleDBSource.<init>(SimpleDBSource.java:18)
at onlyfun.caterpillar.ConnectionDemo.main(ConnectionDemo.java:18)

请教各位高手,应该如何修改,先谢谢了~
...全文
2024 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
铑枪--突廆孒 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yeshiou 的回复:]
是不是把那个包含com的文件夹打包放在我的jar文件中就可以了呢?
[/Quote]
可以这样。你把数据库的驱动包用压缩文件管理器打开,看到那里边的文件夹除了meta-inf以外全部添加到你的jar包里边去。这是最简单的方法。另外3楼的那个方法也可以。只是方法有点麻烦
你还可以直接使用fat jar这个eclipse插件,可以直接把第三方jar里的包全部自动添加到你所打的jar包里边去
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yeshiou 的回复:]
是不是把那个包含com的文件夹打包放在我的jar文件中就可以了呢?
[/Quote]

不是这样的。

你 jar 能运行的话,那也就说明你会设置 MANIFEST.MF 文件了。

你在 MANIFEST.MF 文件后面加上:

Class-Path: lib/mysql-xxxx.jar

将类打包生成一个 jar 文件,在这个 jar 文件的同级目录下建一个 lib 文件夹,将 mysql-xxxx.jar 文件拷贝进去就可以了。

也就是说 jar 所使用到的第三方类库,只能采这种方式进行加载,如果有多个的话,当中使用空格分隔。lib 表示相对于当前
所运行 jar 的路径,如果不写的话,表示第三方类库与运行的 jar 文件放在同一个目录下。
yeshiou 2009-02-19
  • 打赏
  • 举报
回复
是不是把那个包含com的文件夹打包放在我的jar文件中就可以了呢?
Dragon_sxw 2009-02-19
  • 打赏
  • 举报
回复
mysql 的jar 没有打到你的jar中
yeshiou 2009-02-19
  • 打赏
  • 举报
回复
哈哈哈哈 已经解决了~谢谢各位了~
结贴散分~~~
yeshiou 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sbfivwsll 的回复:]
引用 2 楼 yeshiou 的回复:

是不是把那个包含com的文件夹打包放在我的jar文件中就可以了呢?

可以这样。你把数据库的驱动包用压缩文件管理器打开,看到那里边的文件夹除了meta-inf以外全部添加到你的jar包里边去。这是最简单的方法。另外3楼的那个方法也可以。只是方法有点麻烦
你还可以直接使用fat jar这个eclipse插件,可以直接把第三方jar里的包全部自动添加到你所打的jar包里边去
[/Quote]

是说要把com文件夹和.class文件放在一起,然后打包生成.jar吗?
yeshiou 2009-02-19
  • 打赏
  • 举报
回复
不知道是不是我理解错了,我按照这样做了,结果还是跟刚才的一样:(

我用的是mysql-connector-java-3.1.11a-bin.jar 这个
manifest文件中加入了Class-Path: lib/mysql-connector-java-3.1.11a-bin.jar
文件的结构是这样的
E:\my project\jar中包括bin文件夹和classes文件夹
bin文件夹放的是生成的.jar文件
classes文件夹放的是所有需要的.classes文件

E:\my project\lib中包括了mysql-connector-java-3.1.11a-bin.jar

是不是还是弄错了啊?
hspqq 2009-02-19
  • 打赏
  • 举报
回复
数据库驱动包导入到服务器没.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧