辛辛苦苦写了个java的DES字符加解密程序,准备送给朋友的,做完导出成JAR文件,却发现不能运行。Could not find the main class:Mycipher.jar Program will exit.郁闷大了,之前做个很多的jar文件都能运行的,这次确不行,上网搜了搜,问的一大堆,却没真正解决问题的原因,决定自己动手了。
程序再Eclipse中能运行,程序肯定没有问题,用Eclipse的向导导出应该也不会有问题,唉,直接执行不了,到cmd试一下,[b]java -jar MyCipher.jar[/b],报错了,一看错误,是某个类找不到,这个类是我应用的jar文件里的,这让我想到了jvm的类装载机制,一定是类装载器在当前路径里找不到我引入的jar文件里的类。终于让我发现的问题的真正原因。
解决办法:
1.把lib目录里的jar文件一一解压,把解压后的类文件连同目录添加到Mycipher.JAR文件中,很easy的搞定。
2.修改MANIFEST.MF文件的Class-Path属性的值(目录路径用/或者.代替,jar之间用空格分开)如:[b]Class-Path: ../lib/miglayout-3.5.5.jar ../lib/TableLayout.jar ../lib/swing-layout-1.0.jar[/b],同时把用到的jar文件放到指定的路径下。
JAR文件的详解
[url]http://www.ibm.com/developerworks/cn/java/j-jar/[/url]
程序再Eclipse中能运行,程序肯定没有问题,用Eclipse的向导导出应该也不会有问题,唉,直接执行不了,到cmd试一下,[b]java -jar MyCipher.jar[/b],报错了,一看错误,是某个类找不到,这个类是我应用的jar文件里的,这让我想到了jvm的类装载机制,一定是类装载器在当前路径里找不到我引入的jar文件里的类。终于让我发现的问题的真正原因。
解决办法:
1.把lib目录里的jar文件一一解压,把解压后的类文件连同目录添加到Mycipher.JAR文件中,很easy的搞定。
2.修改MANIFEST.MF文件的Class-Path属性的值(目录路径用/或者.代替,jar之间用空格分开)如:[b]Class-Path: ../lib/miglayout-3.5.5.jar ../lib/TableLayout.jar ../lib/swing-layout-1.0.jar[/b],同时把用到的jar文件放到指定的路径下。
JAR文件的详解
[url]http://www.ibm.com/developerworks/cn/java/j-jar/[/url]