我试图将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工作起来仍然很好。)
答案 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文件安装设置时面临同样的问题。为我工作的解决方案是
java -jar <<jar fully qualified path>>
它对我有用:)