多个jar打包的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 21:29:20
我的程序里用到了几个外部的jar,我现在需要把我的这整个程序打包成一个jar,请问要怎么做呢?

网上搜了很久都没有找到足够详细的答案,希望谁可以一步一步地教我噢~
我的程序有三个目录:bin,src,lib,bin下面放的是class文件,src下面放的是.java文件,lib里面是外部的jar
现在lib里面有两个jar:jdom.jar,mysql-connector-java-5.0.3-bin.jar
我的程序都是放在一个叫messenger的包里,main函数在messenger.Messenger里,也就是:
bin
|-messenger
|-Messenger.class
lib
src
...

根目录下还有个Manifest.MF,里面设置了
Class-Path: lib/jdom.jar lib/mysql-connector-java-5.0.3-bin.jar
Main-Class: messenger.Messenger
可是我运行jar cvfm uploadServer_0926b.jar Manifest.MF *.*
这句话之后,看起来没问题,但是到运行的时候就说找不到main函数了。。。。

hp2634 的方法还是不行呀,运行的时候提示说Failed to load Main-Class manifest attribute from messenger.jar
而按我之前的方法打包出来的东西,在控制台下运行的时候提示Exception in thread "main" java.lang.NoClassDefFoundError: messenger/Messenger

但是到运行的时候就说找不到main函数
未必是真的找不到main函数,从你的manifest.mf来看,main函数是找到了的,只不过是你的程序出了问题,不能运行,所以它什么报一个错:
Could not find main class ,program will exit!
解决办法:不要直接运行app.jar文件(你打包后的jar文件).
自己手写一个app.bat (用记事本写好再另存为)内容如下:

java -jar app.jar
这样会有调试信息,你就可以对症下药了.
如果你的程序在打包之前能运行的话,那么打包后的文件结构应该是这样:
root/
app.jar
src/
bin/
app.bat

jar cvf messenger.jar messenger lib\jdom.jar lib\mysql-connector-java-5.0.3-bin.jar
你这样试一下,要还不行只能把lib中的jar包解压了,然后按文件夹的格式去打包