.jar错误 – 无法找到或加载主类

我试图将HelloWorld放在.jar文件中并运行它,但它不起作用。 我创建了java文件并在程序中输入,然后在cmd中写入:

javac HelloWorld.java java HelloWorld 

它工作。 然后我进入了

 echo Main-Class: HelloWorld >manifest.txt jar cvfm HelloWorld.jar manifest.txt HelloWorld.class 

得到了输出

 added manifest adding: HelloWorld.class(in = 426) (out= 288)(deflated 32%) 

然后我进入了

 java -jar HelloWorld.jar HelloWorld.jar 

并且第一行有效,而第二行给了我一个错误:

 Error: Could not find or load main class path\HelloWorld.jar 

当我尝试使用64位jre7 \ bin,jdk1.7.0_51 \ bin,jdk1.7.0_51 \ jre \ bin中的java.exe文件打开它时,我获得的输出(在快速关闭的窗口中)是相同的输出以及32位jre7 \ bin。 我已经卸载并重新安装了我的jre和jdk并重新创建了我的.class和.jar文件,但问题仍然存在。 我在win8上。

编辑:我试图像aetheria那样建议,但没有运气。 我把HelloWorld.java放在路径\ com \ stackoverflow \ user \ blrp中,编译它,它通过输入工作

 java com.stackoverflow.user.blrp.HelloWorld 

在路上。 然后我创建了清单和jar:

 (echo Manifest-Version: 1.0 echo Class-Path: . echo Main-Class: com.stackoverflow.user.blrp.HelloWorld) >manifest.txt jar cvfm HelloWorld.jar manifest.txt com\stackoverflow\user\blrp\HelloWorld.class 

得到了输出

 added manifest adding: com/stackoverflow/user/blrp/HelloWorld.class(in = 454) (out= 312)(deflat ed 31%) 

但仍然,java -jar HelloWorld.jar工作,而HelloWorld.jar没有(同样的错误)。 我也尝试过不做包装的东西,只是清单中的Class-Path,结果相同。

(另外,我在使用.bat文件提问之前解决了这个问题,但是让jar工作起来仍然很好。)

谢谢jbaliuka的建议。 我打开了注册表编辑器(通过在cmd中键入regedit)并转到HKEY_CLASSES_ROOT> jarfile> shell> open>命令,然后打开(默认)并更改值

"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*

(我刚删除了javaw.exe中的w。)之后你必须右键单击一个jar – >打开 – >选择默认程序 – >导航到你的java文件夹并打开\ jre7 \ bin \ java.exe(或任何你java文件夹中的其他java.exe文件)。 如果它不起作用,请尝试切换到javaw.exe,用它打开一个jar文件,然后切换回来。

我对编辑注册表一无所知,只是它很危险,所以你可能需要在执行此操作之前备份它(在顶部栏中,文件>导出)。

你总是可以这样运行:

 java -cp HelloWorld.jar HelloWorld 

-cp HelloWorld.jar将jar添加到类路径中,然后HelloWorld运行您编写的类。

要创建一个没有包的主类的可运行jar,请添加Class-Path: . 清单:

 Manifest-Version: 1.0 Class-Path: . Main-Class: HelloWorld 

我建议使用一个package你的类自己的命名空间。 例如

 package com.stackoverflow.user.blrp; public class HelloWorld { ... } 

当我在寻找上述问题的答案时,我发现了这个问题。 但就我而言,问题是使用’en dash’而不是’dash’。 检查您使用的是哪个短划线,可能是错误的。 我希望这个答案可以加快别人的搜索速度,这样的评论可以为我节省一些时间。

如果这个问题找不到答案所以我去寻找其他线程,我发现我正在用1.8制作我的应用程序但由于某种原因我的jre已经过时了,即使我记得更新它。 我下载了lastes jre 8并且jar文件运行完美。 希望这可以帮助。

我在使用jar文件安装设置时面临同样的问题。 解决方案对我有用

  1. 打开命令提示符作为管理员
  2. 转到jdk bin目录(例如:\ Program Files \ Java \ jdk1.8.0_73 \ bin)
  3. 现在执行java -jar <>

它对我有用:)