jar包双击没反应,命令行中jar命令运行报错"找不到或无法加载主类 ",“**.jar中没有主清单属性”或者“Error: Invalid or corrup jarfile **.jar。

最近写了个小工具,在用eclipse导出可运行jar包时,遇到一连串的问题,双击没反应,命令行中jar命令运行报错“**.jar中没有主清单属性”或者报错“Error: Invalid or corrupt jarfile **.jar”。  接下来依次总结解决问题的方法:

 

一、可运行jar双击没反应或者一闪而过——解决办法:

       1、修改注册表

            (此项多篇博客和论坛帖子都有介绍,但是我的电脑始终不成功,这里记录一个思路):

              首先确认环境变量是否配置,JAVA_HOME配置的是什么?下面的配置javaw.exe的路径用自己环境变量配置的java路径;

              修改注册表(cmd——regedit进入):

             HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command——默认(左击)——右键(修改)——"D:\java\jre\bin\javaw.exe" -jar "%1" %*

              修改注册表()
              HKEY_CLASSES_ROOT\jar_auto_file\shell\open\command——默认(左击)——右键(修改)——"D:\java\jre\bin\javaw.exe" -jar "%1" %*

             小提示:

             1、jar_auto_file可能名字不一样,在注册表中.jar中查看对应的名字就好,我的是jarfile。

             2、也有可能不存在\shell\open\command,右键新建项就好了。

       2、用bat执行:

             新建一个text文档,内容如下:(e2w是我的jar包名字),文档改为.bat保存即可;

              jar包双击没反应,命令行中jar命令运行报错

              小提示:下一行加一个pause命令,便于观察报错或者命令行输出;

       3、cmd命令行中定位到jar包所在的文件夹并执行命令: java -jar **.jar 即可;

             小提示:命令行窗口定位文件夹的快捷方式:在当前文件夹下,注意不选中任何文件和文件夹,按住shift键,同时点击鼠标右键,出现菜单栏,选择“在此处打开powershell窗口”即可。

二、命令行执行报错:“**.jar中没有主清单属性”——解决办法:

         

          这是由于META-INF/MANIFEST.MF文件中,缺少了Main-Class属性配置项,这个配置项指定了jar命令运行方式的程序入口类;

三、命令行执行报错:“Error: Invalid or corrupt jarfile **.jar”——解决办法:

           jar包双击没反应,命令行中jar命令运行报错

          这是由于虽然META-INF/MANIFEST.MF文件中有Main-Class属性配置项,但是内容为空或者缺少空格;

           小提示:以下是需要注意的各个要点: 
           1. Manifest-Version、Main-Class和Class-Path后面跟着一个英文的冒号,冒号后面必须跟着一个空格,然后才是版本号、类和ClassPath。 
           2. Class-Path中的各项应使用空格分隔,不是逗号或分号。 
           3. Class-Path中如果有很多项,写成一行打包的时候会报错line too long,这时需要把Class-Path分多行写。注意:从第二行开始,必须以两个空格开头,三个以上我没试过,不过不用空格开头和一个空格开头都是不行的,我已经试过了。 
           4. Class-Path写完之后最后一定要有一个空行。 
           5. jar包内有些配置文件想放在jar包外面,比如文件config.properties:如果这个文件是以路径方式载入的,比如new file("./config/config.properties"),那么将config.properties放在jar包相同目录下的config目录下即可,也就是说“./”路径等价于jar包所在目录;如果这个文件是以ClassPath下的文件这种方式载入的,比如在Spring中载入classpath:config.properties,则在MF文件的配置文件的ClassPath中添加“./”,然后将这个配置文件与jar包放在同一个目录即可,当然也可以在MF文件的配置文件的ClassPath中添加“./config/”,然后把配置文件都放在jar包相同目录下的config目录下。

四、“错误:找不到或无法加载主类 **.jar ”——包名、类名写错,按照正确的写法:包名.类名,如: e2w.Main00

jar包双击没反应,命令行中jar命令运行报错

小提示:关于MANIFEST.MF文件详解,请参考MANIFEST.MF文件详解

你可能感兴趣的:(java)