我有一个名为helloworld.jar的JAR文件。 为了运行它,我在命令行窗口中执行以下命令:

java -jar helloworld.jar

这工作得很好,但我如何执行它与双击? 我需要安装什么软件吗?


当前回答

首先在cmd(命令提示符)上设置路径:

set path="C:\Program Files\Java\jre6\bin"

然后输入

java -jar yourProgramname.jar 

其他回答

我在Windows 10上也遇到了同样的问题。我用右键单击“helloworld.jar”修复了它,然后进入属性,点击“打开:”下的更改按钮,然后选择“在这台PC上寻找另一个应用程序”。在“Open with…”对话框中,打开PC上的Java文件夹位置,打开相应的jdk文件夹,然后打开bin文件夹,选择“javaw.exe”。然后下次您的“helloworld.jar”将以正常方式打开。

通常的java位置示例:“C:\Program Files (x86)\ java \jdk1.8.0_111\bin”。

不幸的是,这并不容易,因为微软在最近的Windows版本中删除了高级文件关联对话框。-对于较新的Windows版本,您可以只指定将用于打开.jar文件的应用程序。

修复在Windows上打开.jar文件需要两个步骤。

Open the Control Panel, and chose "Default Programs -> Set Associations". Find .jar extension (Executable JAR file) there, and pick Java as default program to open this extension. It will probably be listed as "Java Platform(SE)". A faster alternative perhaps is straightforward right-click on a .jar file, and then change associated program by clicking on the "Change..." button. Now open the regedit, and open the HKEY_CLASSES_ROOT\jarfile\shell\open\command key. Luckilly for us, we may specify parameters there for the (Default) value. On my Windows system it looks like: C:\app\32\jre7\bin\javaw.exe" -jar "%1" %* but in most cases it is the following string: C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

注:

不要在那里使用java.exe,因为它会打开shell窗口。 本线程中提到的jarfix工具很可能只是为您修改注册表。我更喜欢手动注册表更改方法,因为这意味着系统管理员可以将注册表更改“推送”到网络中的所有工作站。

除了所有其他的建议,还有一件事你需要考虑。你的helloworld.jar是一个控制台程序吗?如果是,那么我不相信您能够将其变成一个可双击的jar文件。控制台程序使用常规的cmd.exe shell窗口作为它们的输入和输出。通常jar“启动器”绑定到javaw.exe,它不会创建命令shell窗口。

如果你有一个名为Example.jar的jar文件,请遵循以下规则:

打开notepad.exe 编写:java -jar示例 保存扩展名为。bat 将其复制到包含.jar文件的目录 双击它以运行.jar文件

有一种方法不需要用户在他的PC上做改变。runtime . getrtime .exec()允许我们启动cmd.exe并在其中执行命令。因此,当用户单击.jar文件时,java程序可以在命令提示符下自行运行。

public static void main(String[] args) throws IOException {
    if(args.length == 0) {
        Process p = Runtime.getRuntime().exec("cmd.exe /c start java -jar " + (new File(NameOfClass.class.getProtectionDomain().getCodeSource().getLocation().getPath())).getAbsolutePath() + " cmd");
    } else {
        //code to be executed
    }
}