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/
» 本文链接地址:https://www.litefeel.com/class-not-found-exception-at-jar-solution/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
Thanks you was of interest.