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

时间:2014-02-08 19:35:03

标签: java 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 \中的java.exe文件打开它时,我获得了相同的输出(在一个快速关闭的窗口中) bin,以及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工作起来仍然很好。)

4 个答案:

答案 0 :(得分:12)

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

更改值

"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文件,然后切换回来。

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

答案 1 :(得分:8)

您可以随时运行:

java -cp HelloWorld.jar HelloWorld

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

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

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

我建议使用package为您的类提供自己的命名空间。 E.g。

package com.stackoverflow.user.blrp;

public class HelloWorld {
    ...
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

  1. 以管理员身份打开命令提示符
  2. 转到jdk bin目录(例如:\ Program Files \ Java \ jdk1.8.0_73 \ bin)
  3. 现在执行java -jar <<jar fully qualified path>>
  4. 它对我有用:)