分享

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

 9loong 2012-10-12

最近在弄个聊天室,由于要跟数据库通信,用到了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./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/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多