在Windows上运行JAR文件

297

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

java -jar helloworld.jar

这个方法很好用,但我怎么才能双击执行它呢?需要安装任何软件吗?


2
按照这里描述的步骤操作:在Vista上双击执行Jar文件 - RealHowTo
26个回答

150
最简单的方法可能是升级或重新安装Java Runtime Environment(JRE)。
或者这样做:
  • 打开Windows资源管理器,从“工具”中选择“文件夹选项”
  • 单击“文件类型”选项卡,向下滚动并选择JAR文件类型。
  • 点击"高级"按钮。
  • 在“编辑文件类型”对话框中,在“操作”框中选择“打开”,然后单击“编辑...”
  • 单击“浏览”按钮,导航到Java解释器javaw.exe的位置。
  • 在“执行操作的应用程序”字段中,需要显示类似于C:\Program Files \ Java \ j2re1.4.2_04 \ bin \ javaw.exe”-jar“%1”%的内容(注意:以“javaw”开头的部分必须完全相同;路径名的其他部分可以因使用哪个版本的Java而异),然后按“确定”按钮,直到关闭所有对话框。
此处引自:http://windowstipoftheday.blogspot.com/2005/10/setting-jar-file-association.html

17
我认为最简单的方法是右键单击任何 .jar 文件,选择“使用Java运行时环境”打开。 :) - Kassem
1
每次这样做,总是会出现“Java平台SE二进制文件已停止工作”的错误...有人能帮忙看看,可能是什么问题吗? - Faizan
1
@Faizan - 你的问题听起来像是一个独立的问题。我在 Stack Overflow 和 Google 上看到了一些关于“Java platform SE binary has stopped working”的结果。建议你去查一下。 - Brian Kelly
29
Win 7的文件夹选项中没有“文件类型”选项卡。 - Radu Simionescu
5
和Win 10一样。这个功能被移到了别处吗?Windows 10系统中,“按文件类型默认应用程序”页面似乎不能编辑执行命令以添加“jar参数”。 - Nick J

85

在Windows Vista或Windows 7中,手动文件关联编辑器已被移除。

最简单的方法是运行Jarfix,这是一个小巧而强大的免费工具。只需运行它,你的Java应用程序就可以再次双击打开了。


5
希望能有人详细说明这个可执行文件所做的更改,这样其他人就可以选择手动重复操作,而不必执行一些随意编译的陌生人代码。 - Nick J

76

如果您需要分发您的 .jar 文件并在其他人的 Windows 计算机上运行它, 您可以在命令提示符中创建一个类似于以下内容的简单的 .bat 文件:

java -jar MyJavaTool.jar

将.bat文件放在与你的.jar文件相同的目录中。


但是 .bat 文件如何被执行?这个策略也可以让 Java 应用程序打开一个命令行会话吗? - Ungeheuer
1
不,你只需要打开批处理文件。我不确定我理解你的问题。 - user9016207

35
如果你有一个名为Example.jar的jar文件,按照如下规则操作:
  1. 打开 notepad.exe
  2. 输入 : java -jar Example.jar
  3. 保存并使用扩展名为 .bat
  4. 复制它到具有 .jar 文件的目录
  5. 双击运行你的 .jar 文件

1
非常好的在Windows上运行jar文件的方法!它还不会隐藏命令行输入,所以我能够看到为什么我的jar文件没有像我想象中那样运行。谢谢。 - Joe

20
这导致一个有趣的副作用,当在命令提示符中启动可运行的jar文件时会出现问题。
如果您尝试在命令提示符中执行以下操作:
jarfile.jar parameter

没有成功,因为这被翻译成了以下内容(该内容无法工作):

javaw.exe -jar jarfile.jar parameter

然而,以下命令可以正常工作:

java.exe -jar jarfile.jar parameter

如果您按照上述方法更改文件管理器中的关联为:

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

然后您可以输入:

jarfile.jar parameter
在命令提示符中输入它,然后它现在就可以工作了!(原文中可能是指某个命令或程序)
编辑:(但是当您运行基于窗体(非控制台)的Java应用程序时,您会得到一个黑色控制台窗口,因此这不是一个理想的解决方案)
如果在Windows上通过双击运行这些jar文件,则不会传递任何参数,因此您的Java代码需要处理堆栈溢出异常并在结束时包含一个“按键”函数,否则该窗口将会消失。
为了在Windows中传递参数,您必须创建一个jar文件的快捷方式,在目标行中包括参数(右键单击快捷方式并选择属性),以此方式无法向jar文件图标本身添加参数。
这里没有单一、一致的解决方案,但您将遇到任何其他控制台应用程序的相同问题。
有一个名为“bat to exe”的Windows免费应用程序,您可以使用它从.bat文件中创建exe文件,并在其中包含适当的命令行。您还可以使用此应用程序将jar文件嵌入exe中,并在运行完成后清理它,因此这可能是更优雅的解决方案。

10

在 Windows XP * 中,你只需要使用 2 个 shell 命令:

   C:\>ftype myjarfile="C:\JRE1.6\bin\javaw.exe" -jar "%1" %* 
   C:\>assoc .jar=myjarfile  

显然,使用正确的JRE路径和任何你想要的名称代替myjarfile

仅仅检查当前的设置:

   C:\>assoc .jar  
   C:\>ftype jarfile  

这次使用第一个命令返回的值(如果有)而不是jarfile

* 未在Windows 7上测试


1
一位匿名用户在Windows 7(JRE 7)上进行了测试。他们说如果您以管理员身份运行cmd,则可以正常工作。 - Jeremy Stein
在我看来,这是最佳解决方案。适用于Windows 10。命令ftype和assoc应该在具有管理员权限的命令提示符窗口中运行。 - SixDoubleFiveTreeTwoOne

10

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

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

然后输入

java -jar yourProgramname.jar 

9
在注册表编辑器中,打开 HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command
在左边的默认选项上双击并在 java.exe 路径和 "%1" 参数之间添加 -jar。

就是这样了。谢谢。其他所有的东西都没有帮助到。 - raedma
4年后,AdoptOpenJDK Java 11成为唯一有效的解决方案。谢谢。 - beermann
遗憾的是,我无法收藏这个答案。可以! - jirimertin

7

有一种方法可以在不要求用户更改其电脑设置的情况下实现。Runtime.getRuntime.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
    }
}

6

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接