【问题标题】:Running JAR file on Windows在 Windows 上运行 JAR 文件
【发布时间】:2010-09-28 12:29:09
【问题描述】:

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

java -jar helloworld.jar

这工作正常,但我如何通过双击来执行它呢? 我需要安装任何软件吗?

【问题讨论】:

标签: java jar executable-jar


【解决方案1】:

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

另一件事:如果没有混淆,它应该可以工作;检查并确保您有与 .jar 扩展名关联的 java。

【讨论】:

    【解决方案2】:

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

    或者这个:

    • 打开 Windows 资源管理器,从工具中选择“文件夹选项...”
    • 单击文件类型选项卡,向下滚动并选择 JAR 文件类型。
    • 按“高级”按钮。
    • 在编辑文件类型对话框中,选择在操作框中打开,然后单击编辑...
    • 按浏览按钮并导航到 Java 解释器 javaw.exe 的位置。
    • 在Application used to perform action字段中,需要显示类似C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -jar "%1" %的内容(注意:以'javaw'开头的部分必须完全一样;路径名的其他部分可能因版本而异您正在使用的 Java 版本),然后按 OK 按钮,直到所有对话框都关闭。

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

    【讨论】:

    • 我认为最简单的方法是右键单击任何 .jar 文件 > 打开并选择“Java 运行时环境”。 :)
    • 这样做,总是给我这个错误“Java 平台 SE 二进制文件已停止工作”......谁能帮忙,可能是什么问题?
    • @Faizan - 您的问题听起来像是一个单独的问题。我看到一些关于“Java 平台 SE 二进制文件已停止工作”的 SO 和 Google 结果。我会检查一下。
    • win 7的文件夹选项中没有文件类型选项卡
    • 与 Win 10 相同。这是否被移动到具有相同功能的某个地方? Windows 10 系统的“文件类型默认应用”页面似乎不允许您编辑执行命令以添加“jar 参数”
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      一个有趣的副作用是在命令提示符下启动可运行的 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 应用程序时,您会得到一个黑色的控制台窗口,所以这不是一个理想的解决方案)

      如果您通过在窗口中双击这些 jar 文件来运行这些 jar 文件,则不会传递任何参数,因此您的 Java 代码需要处理堆栈溢出异常并在末尾包含“按键”功能,否则窗口将消失.

      为了在windows中传递参数,您必须创建jar文件的快捷方式,其中包括目标行中的参数(右键单击快捷方式并选择属性)您不能将参数添加到jar文件图标以这种方式自己。

      这里没有一个单一的、一致的解决方案,但任何其他控制台应用程序都会遇到同样的问题。

      有一个名为“bat to exe”的 Windows 免费软件应用程序,您可以使用它从 .bat 文件中创建一个带有适当命令行的 exe 文件。您还可以将jar文件嵌入到该应用程序的exe中,并在运行完成后对其进行清理,因此这可能是一个更优雅的解决方案。

      【讨论】:

        【解决方案5】:

        在 Windows Vista 或 Windows 7 中,manual file association editor 已被删除。

        最简单的方法是运行Jarfix,这是一个小巧但功能强大的免费软件工具。只需运行它,您的 Java 应用程序就会回来...再次双击。

        【讨论】:

        • 如果有人能详细说明这个可执行文件所做的更改,那就太好了,这样某人就可以选择手动重复它,而无需执行一些随机的陌生人编译的代码。
        【解决方案6】:

        在 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 上测试

        【讨论】:

        • 一位匿名用户使用 Windows 7 (JRE 7) 对此进行了测试。他们说如果你以管理员身份运行 cmd 就可以了。
        • 我眼中的最佳解决方案。适用于 Windows 10。命令 ftype 和 assoc 应在具有管理员权限的命令提示符窗口中运行。
        【解决方案7】:

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

        1. 打开notepad.exe
        2. 写信:java -jar Example.jar
        3. 用扩展名.bat保存它
        4. 复制到.jar文件所在目录
        5. 双击它运行你的.jar文件

        【讨论】:

        • 在 Windows 上运行 jar 的好方法!它也没有隐藏命令行输入,所以我可以看到为什么我的 jar 没有像我想的那样运行。谢谢。
        【解决方案8】:

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

        java -jar MyJavaTool.jar
        

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

        【讨论】:

        • 但是.bat 是如何执行的呢?这与让 Java 应用程序也打开命令行会话的策略相同吗?
        • 不,您只需打开 bat 文件。我不确定我是否理解您的问题。
        【解决方案9】:

        我正在运行 Windows 7 x64 并且无法使用这些修复程序中的任何一个。

        毕竟这个对我有用:

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

        您可以下载一个包含 .bat 文件以运行的存档,但请检查实际 javaw.exe 的路径!!!!

        【讨论】:

          【解决方案10】:

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

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

          然后输入

          java -jar yourProgramname.jar 
          

          【讨论】:

            【解决方案11】:

            如果您使用 eclipse 制作您的 java 文件,您可以选择将其导出为可运行的 jar 文件。我用我的程序做到了这一点,我只需点击 jar,它就会像那样运行。这将适用于两个窗口,以及 os x。

            【讨论】:

            • 根据question,似乎不能保证工作
            【解决方案12】:

            有一种方法不需要用户在他的 PC 上进行更改。 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
                }
            }
            

            【讨论】:

              【解决方案13】:

              在注册表中,打开HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command

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

              【讨论】:

              • 就是这样。谢谢。所有其他事情都没有帮助。
              • 4 年后 AdoptOpenJDK Java 11 - 唯一有效的解决方案。谢谢。
              【解决方案14】:

              制作一个 start.bat 是唯一对我有用的东西。

              打开一个文本文档并输入。 java -jar 不管你叫什么 .jar

              将 start.bat 保存在与您要执行的 .jar 文件相同的文件夹中。然后运行。蝙蝠

              【讨论】:

                【解决方案15】:

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

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

                1. 打开控制面板,然后选择“默认程序 -> 设置关联”。在那里找到 .jar 扩展名(可执行的 JAR 文件),然后选择 Java 作为默认程序来打开这个扩展名。它可能会被列为“Java Platform(SE)”。一个更快的选择可能是直接右键单击 .jar 文件,然后通过单击“更改...”按钮更改关联的程序。

                2. 现在打开注册表,打开HKEY_CLASSES_ROOT\jarfile\shell\open\command 键。幸运的是,我们可以在那里为(Default) 值指定参数。在我的 Windows 系统上,它看起来像:C:\app\32\jre7\bin\javaw.exe" -jar "%1" %*,但在大多数情况下,它是以下字符串:C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

                注意事项:

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

                【讨论】:

                • 直接注册表编辑对我有用,因为 jarfix 不再检测 JRE 11。
                【解决方案16】:

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

                当然,您必须拥有与java.exe 关联的.class 文件。这可能不适用于所有情况,但对我来说大部分时间都有效。

                【讨论】:

                  【解决方案17】:

                  如果您需要通过双击运行 jar 文件,您必须将其创建为“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

                  【讨论】:

                    【解决方案18】:

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

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

                    【讨论】:

                    • 不适用于我的 Win10。也没有 Java/JDK,只有 Java/JRE 文件夹
                    【解决方案19】:

                    有很多methods 用于在Windows 上运行.jar 文件。其中之一是使用命令提示符。

                    步骤:

                    1. 打开命令提示符(以管理员身份运行)
                    2. 现在为根目录编写“cd\”命令
                    3. 键入“java jar 文件名.jar” 注意:您还可以使用任何第三方应用程序,如 WinRAR、jarfix 等。

                    【讨论】:

                      【解决方案20】:

                      使用.bat 文件:

                      将您的命令放入 .bat 文件中。在这里,您的命令将是 java -jar path\yourJarName.jarSomething like: java -jar C:\workspace\myApplication.jar

                      保存并双击bat文件运行你的jar。

                      【讨论】:

                        【解决方案21】:

                        PreScript:如果您的提示立即出现又消失,原因是您的程序被执行并自动关闭。尝试将扫描仪放在最后以终止,它会在终止之前让您的提示等待输入。 (或者可能使用延迟)

                        在同样的情况下,从 cmd 运行 .jar 工作正常,但双击什么也没做。

                        解决方案: 打开任何文本编辑器并编写命令行: java -jar Example.jar 将文件另存为 .bat 文件。 运行此 bat 文件以获得所需的输出。

                        向前迈出一步,您可以使用 Bat To Exe Converter 等简单的 GUI 工具将此 bat 文件转换为 exe 文件。

                        现在您可以将您的 .jar 作为 .exe 文件的分发版共享,任何人都可以使用它,只需确保将所有文件保存在一起。 (尤其是 .jar 和 .bat 文件,因为 .bat 只是一个 cmd 提示符)(感觉合乎逻辑)

                        我对开发和学习还很陌生。如果犯了任何错误,请原谅。欢迎提出建议。

                        【讨论】:

                          【解决方案22】:

                          步骤:

                          1.) 在 Google 上搜索 Java SE 运行时环境:https://www.google.com/search?q=Java+SE+Runtime+Environment

                          2.) 将适当的版本安装到您​​的计算机上

                          【讨论】:

                            【解决方案23】:

                            创建.bat 文件:

                            start javaw -jar %*
                            

                            然后选择应用程序默认打开.jar 这个.bat 文件。

                            启动.jar 文件时,它将关闭cmd

                            【讨论】:

                            • 这是通过单击为 java 11 启动 jar 的唯一正确答案。但是您需要多做一次卸载较低的 jdks(可选) ,右键单击一个jar文件->打开方式->选择另一个应用程序->选中“始终使用...”复选框->此comp(或此类)上的应用程序->导航到bat->启动
                            【解决方案24】:

                            编译:

                            javac  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart.java
                            

                            跑步:

                            java  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart
                            

                            【讨论】:

                              【解决方案25】:

                              其实我也遇到过这个问题, 我通过为我的 jar 文件制作一个 .bat 运行器来解决它

                              这是代码:

                              class FileHandler{
                                 public static File create_CMD_Rnner(){
                                    int exitCode = -1625348952;
                                    try{
                                         File runner = new File(Main.batName);
                                         PrintWriter printer = new PrintWriter(runner);
                                         printer.println("@echo off");
                                         printer.println("title " + Main.applicationTitle);
                                         printer.println("java -jar " + Main.jarName + " " + Main.startCode );
                                         printer.println("PAUSE");
                                         printer.flush();
                                         printer.close();
                                         return runner;
                                     }catch(Exception e){
                                         System.err.println("Coudln't create a runner bat \n exit code: " + exitCode);
                                         System.exit(exitCode);
                                         return null;
                                     }
                                 }
                              }
                              



                              然后在您的主应用程序类中执行以下操作:

                              public class Main{
                                  static String jarName = "application.jar";
                                  static String applicationTitle = "java Application";
                                  static String startCode = "javaIsTheBest";
                                  static String batName = "_.bat";
                              
                              
                                  public static void main(String args[]) throws Exception{
                                      if(args.length == 0 || !args[0].equals(startCode)) {
                                          Desktop.getDesktop().open(FilesHandler.create_CMD_Rnner());
                                          System.exit(0);
                                      }else{
                                          //just in case you wanted to hide the bat
                                          deleteRunner();
                                          // Congratulations now you are running in a cmd window ... do whatever you want
                                          //......
                                          System.out.println("i Am Running in CMD");
                                          //......
                                          Thread.sleep(84600);
                                      }
                                  }
                              
                              
                                  public static void deleteRunner(){
                                      File batRunner = new File(batName);
                                      if(batRunner.exists()) batRunner.delete();
                                  }
                              }
                              


                              请注意

                              1. 此代码(我的代码)仅适用于 jar 文件,而不适用于类文件。

                              2. jar 文件必须与字符串“jarName”同名,即 Main 类

                              【讨论】:

                                【解决方案26】:

                                在 Windows 10 上遇到了同样的问题
                                解决方案:

                                1. 检查您的 JAVA_HOME 和 JAVA_PATH。
                                  https://javatutorial.net/set-java-home-windows-10
                                2. 使用 Jarfix 恢复 .jarjavaw.exe 之间的关联
                                  https://johann.loefflmann.net/en/software/jarfix/index.html

                                【讨论】:

                                  猜你喜欢
                                  • 2017-02-19
                                  • 1970-01-01
                                  • 2010-12-04
                                  • 1970-01-01
                                  • 2020-04-02
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2013-03-17
                                  • 2015-03-10
                                  相关资源
                                  最近更新 更多