X

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的选项. 然后看到到网上乱搜一通,功夫不负有心人,终于让我逮到一篇好文章:
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文件。

最后点击Finish生成自己的jar。

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

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

This post was last modified on 2019 年 03 月 04 日 01:07

View Comments (1)

This website uses cookies.