在Windows上运行JAR文件

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

java -jar helloworld.jar 

这工作正常,但我怎样才能用双击执行呢? 我是否需要安装任何软件?

最简单的路线可能是升级或重新安装Java运行时环境(JRE)。

或这个:

  • 打开Windows资源pipe理器,从工具中select“文件夹选项…”
  • 单击文件types选项卡,向下滚动并selectJAR文件types。
  • 按高级button。
  • 在“编辑文件types”对话框中,select“在操作”框中打开并单击“编辑…”。
  • 按浏览button并导航到Java解释器javaw.exe的位置。
  • 在用于执行操作的应用程序字段中,需要显示类似于C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -jar "%1" % (注意:以'javaw '必须完全一样;path名的另一部分可以根据您使用的Java版本而有所不同),然后按OKbutton,直到所有的对话框closures。

哪里从这里被偷了: http : //windowstipoftheday.blogspot.com/2005/10/setting-jar-file-association.html

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

最简单的方法是运行Jarfix ,一个小而强大的免费软件工具。 只要运行它,你的Java应用程序回来了…再次双击。

如果您需要分发.jar文件并使其可在其他人的Windows计算机上运行,​​则可以在命令提示符下使用如下所示的简单.bat文件:

 java -jar MyJavaTool.jar 

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

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

  1. 打开一个notepad.exe
  2. 写: java -jar Example.jar
  3. 用扩展名.bat保存
  4. 将其复制到具有.jar文件的目录中
  5. 双击它运行你的.jar文件

在命令提示符中启动可运行的jar文件时,会产生一个有趣的副作用。

如果您尝试(在命令提示符下)

jarfile.jar参数

没有快乐,因为这被翻译成以下(不起作用):

javaw.exe -jar jarfile.jar参数

但是下面的命令可以工作:

java.exe -jar jarfile.jar参数

如果您将上述文件pipe理器中的关联更改为:

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

你可以input:

jarfile.jar参数

在命令提示符下,它现在将工作! 编辑:(但是,当你运行一个基于表单的(非控制台)Java应用程序,然后你会得到一个黑色的控制台窗口,所以这不是一个理想的解决scheme)

如果通过在Windows中双击这些jar文件来运行这些jar文件,则不会传递任何参数,所以您的Java代码需要处理堆栈溢出exception,并在最后包含“按一个键”function,否则窗口将会消失。

为了在窗口中传递一个参数,你必须创build一个快捷方式到jar文件,其中包括目标行中的参数(右键单击快捷方式并select属性),您不能将参数添加到jar文件图标本身办法。

这里没有一个一致的解决scheme,但是您将遇到与任何其他控制台应用程序相同的问题。

有一个叫做“bat to exe”的windows免费应用程序,你可以使用它来创build一个.bat文件的exe文件。 你也可以在这个应用程序中将jar文件embedded到exe文件中,并在运行完成后将其清理干净,所以这可能是一个更优雅的解决scheme。

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

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

然后键入

 java -jar yourProgramname.jar 

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

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

显然使用正确的path为JRE和任何你想要的名字,而不是myjarfile

只需检查当前的设置:

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

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

* 未经Windows 7testing

我正在运行Windows 7 x64,无法使用任何这些修复程序。

最后这个为我工作:

http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi

有一个档案,您可以下载包含一个.bat文件运行,但检查实际javaw.exe的path!

除了所有其他的build议,还有一件事你需要考虑。 你的helloworld.jar是一个控制台程序吗? 如果是这样,那么我不相信你可以把它变成一个双击jar文件。 控制台程序使用常规cmd.exeshell窗口进行input和输出。 通常,jar“launcher”绑定到javaw.exe,它不会创build一个命令行窗口。

有没有要求用户在他的电脑上进行更改的方式。 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 } } 

你想检查一些事情; 如果这是您自己的jar文件,请确保您已在清单中定义了一个Main-class。 既然我们知道你可以从命令行运行它,另一件事是创build一个窗口快捷方式,并修改属性(你将不得不环顾四周,我没有Windows机器看),以便它在打开时执行的命令是您提到的java -jar命令。

另一件事:如果有什么不迷惑的话,它应该工作。 检查并确保你有与.jar扩展名关联的java。

在registry中,打开HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command

双击左侧的默认值,并在java.exepath和“ %1 ”参数之间添加-jar。

通过单击/双击运行jar文件的另一种方法是在文件的名称前添加“-jar”。 例如,您可以将文件MyJar.jar重命名为-jar MyJar.jar

当然,您必须拥有与java.exe关联的.class文件。 这可能在所有情况下都不起作用,但是它对我来说是最有效的。

如果您使用eclipse制作您的java文件,您可以select将其导出为可运行的jar文件。 我用我的程序做了这个,我只需点击jar就可以运行。 这将在两个窗口,以及操作系统x。

做一个start.bat是我唯一的工作。

打开一个文本文件并input。 java -jar 无论你的叫做 .jar

将start.bat另存为与要执行的.jar文件相同的文件夹。 然后运行。 蝙蝠

不幸的是,这并不像Microsoft在最近的Windows版本中删除高级文件关联对话框那么简单。 – 对于较新的Windows版本,您只能指定将用于打开.jar文件的应用程序。

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

  1. 打开控制面板,并select“默认程序 – >设置关联”。 find.jar扩展名( 可执行JAR文件 ),selectJava作为默认程序来打开这个扩展。 它可能会被列为“ Java平台(SE) ”。 更快的select可能是直接右键单击.jar文件,然后通过单击“更改…”button更改相关的程序。

  2. 现在打开registry编辑器,打开HKEY_CLASSES_ROOT\jarfile\shell\open\command键。 Luckilly对于我们来说,我们可以在那里为(Default)值指定参数。 在我的Windows系统上,它看起来像: C:\app\32\jre7\bin\javaw.exe" -jar "%1" %*但在大多数情况下,它是以下string: C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

笔记:

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

如果你需要通过双击运行jar文件,你必须创build一个“ Runnable JAR ”。 你可以简单地用你的IDE来做。

如果您使用的是eclipse,请按照下列步骤操作:

  To create a new runnable JAR file in the workbench: 1.From the menu bar's File menu, select Export. 2.Expand the Java node and select Runnable JAR file. Click Next. 3.In the Opens the Runnable JAR export wizard Runnable JAR File Specification page, select a 'Java Application' launch configuration to use to create a runnable JAR. 4.In the Export destination field, either type or click Browse to select a location for the JAR file. 5.Select an appropriate library handling strategy. Optionally, you can also create an ANT script to quickly regenerate a previously created runnable JAR file. 

更多的信息可以在Eclipse帮助页面: LINK上find

我在Windows 10中遇到了同样的问题。我使用右键单击helloworld.jar ”来修复它,然后转到属性 ,然后单击“打开方式”下的更改button,然后select“ 在此PC上查找另一个应用程序 ”。 在“ 打开方式… ”对话框中,转到PC上的Java文件夹位置,打开相应的jdk文件夹,然后打开bin文件夹并从那里select“ javaw.exe ”。 然后下一次你的“ helloworld.jar ”将打开正常的方式。

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