《JAR运行出现ClassNotFoundException异常的解决办法》

最近在弄个聊天室,由于要跟数据库通信,用到了JDBC的3个jar,在eclipse里OK的,但布置到服务器坏事了,不知道怎么弄JDBC的3个jar了
写个autoStart.bat

java -jar chatServer.jar pause

运行报错:

F:\mydocuments\java project\socketTest\release>java -jar chatServer.jar java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver         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 cn.lite3.chatServer.managers.DBManager.<init>(DBManager.java:14)         at cn.lite3.chatServer.ChatServer.<clinit>(ChatServer.java:15)

群里朋友说 用 fatJar ,可是我安装了不管用,没有fatjar的选项. :mrgreen:
然后看到到网上乱搜一通,功夫不负有心人,终于让我逮到一篇好文章 :roll:
http://www.abcjava.com/html/JAVA/J2SE/2009/0902/720.html

自己写manifest.mf文件.
手动添加JDBC要用到的3个jar文件,mssqlserver.jar,msutil.jar,msbase.jar
新建个文件,命名为 manifest.mf,写入以下内容,(当然要根据你自己的东西修改的)
manifest.mf 最后一定要有一个空行.

Manifest-Version: 1.0 Main-Class: cn.lite3.chatServer.ChatServer Class-Path: lib/mssqlserver.jar lib/msutil.jar lib/msbase.jar

再在eclipse将工程导出时,到达JAR Manifest Specification这一步时,选择Use existing manifest from workplace,在通过Browse按钮选择刚刚新建的manifest.mf文件。
myManifest.mf
最后点击Finish生成自己的jar.

新建一个目录release . 找到刚刚生成的jar(我的是chatServer.jar), 放到release目录里,
再见个lib文件夹,把要外部库的3个jar放到里面(mssqlserver.jar,msutil.jar,msbase.jar),
最后把开头的autoStart.bat放到release目录里,
到此一切完工了. 双击autoStart.bat 运行成功 :roll:
目录类似这样:
finallyDir

更详细的请看这里http://www.ibm.com/developerworks/cn/java/j-jar/

posted on 2012-11-28 23:39  kenty  阅读(2772)  评论(1编辑  收藏  举报