关于java:在Windows上运行JAR文件

Running JAR file on Windows

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

1
java -jar helloworld.jar

这可以正常工作,但是我如何双击执行它?
我需要安装任何软件吗?


最简单的方法可能是升级或重新安装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


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

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


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

1
java -jar MyJavaTool.jar

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


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

  • 打开notepad.exe
  • 写入:java -jar Example.jar
  • 使用扩展名.bat保存
  • 将其复制到具有.jar文件的目录中
  • 双击运行.jar文件

  • 在命令提示符下启动可运行的jar文件时,这会引起一个有趣的副作用。

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

    1
    jarfile.jar parameter

    没什么好高兴的,因为这正在被翻译成以下内容(无效):

    1
    javaw.exe -jar jarfile.jar parameter

    但是,以下命令确实起作用:

    1
    java.exe -jar jarfile.jar parameter

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

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

    然后您可以输入:

    1
    jarfile.jar parameter

    在命令提示符下,它现在可以工作了!

    编辑:(但是,当您运行基于表单(非控制台)的Java应用程序时,会出现黑色的控制台窗口,因此这不是理想的解决方案)

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

    为了在Windows中传递参数,您必须创建jar文件的快捷方式,该快捷方式在目标行中包含该参数(右键单击快捷方式并选择属性),您不能在此向jar文件图标本身添加参数方式。

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

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


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

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

    然后输入

    1
    java -jar yourProgramname.jar

    在Windows XP *中,您仅需要2个Shell命令:

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

    显然,使用正确的JRE路径和所需的任何名称代替myjarfile

    仅检查当前设置:

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

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

    *未经Windows 7测试


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

    1
    2
    3
    4
    5
    6
    7
    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
        }
    }


    除了所有其他建议,您还需要考虑另一件事。您的helloworld.jar是控制台程序吗?如果是这样,那么我相信您将无法将其制成可双击的jar文件。控制台程序将常规cmd.exe Shell窗口用于其输入和输出。通常,罐子"启动器"绑定到javaw.exe,而后者不会创建命令外壳窗口。


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

    毕竟这对我有用:

    Windows7 .jar file association broken with Nokia OVI

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


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

    另一件事:如果没有混淆,它仍然应该起作用;检查并确保您具有与.jar扩展名关联的Java。


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

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


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

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

  • 打开控制面板,然后选择"默认程序->设置关联"。在此处找到.jar扩展名(可执行JAR文件),然后选择Java作为默认程序以打开此扩展名。它可能会被列为" Java Platform(SE)"。更快的替代方法可能是直接在.jar文件上单击鼠标右键,然后通过单击"更改..."按钮来更改关联的程序。

  • 现在打开regedit,然后打开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,因为它会打开外壳程序窗口。
    • 该线程中提到的jarfix工具很可能只为您修改注册表。我更喜欢手动注册表更改方法,因为这意味着系统管理员可以将注册表更改"推送"到网络中的所有工作站。

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

    当然,您必须具有与java.exe关联的.class文件。这可能并非在所有情况下都有效,但对我而言大多数时候都有效。


    我在Windows 10中也遇到了同样的问题。我使用righ修复了该问题,在" helloworld.jar"上单击并转到属性,然后单击"打开方式:"下的更改按钮,然后选择"在此PC上查找其他应用程序"。在"打开方式..."对话框中,转到PC上的Java文件夹位置,然后打开相应的jdk文件夹,然后打开bin文件夹并从中选择" javaw.exe"。然后,下次您的" helloworld.jar"将以正常方式打开。

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


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

    在同样的情况下,从cmd运行.jar可以正常工作,但是双击却无济于事。

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

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

    现在,您可以在.exe文件中以分发形式共享您的.jar,任何人都可以使用,只需确保将所有文件放在一起即可。 (特别是.jar和.bat文件导致.bat只是一个cmd提示符)(感觉如何合理)

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


    其实我也面对这个问题
    我通过为jar文件制作一个.bat运行程序来解决它

    这是代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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
     exit code:"
    + exitCode);
               System.exit(exitCode);
               return null;
           }
       }
    }

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    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();
        }
    }

    请注意

  • this code (my code) works only with a jar file, not a class file.

  • the jar file must have the same name as the String"jarName" is the Main class


  • 如果使用eclipse制作Java文件,则可以选择将其导出为可运行的jar文件。我是用我的程序做到这一点的,我只需单击jar,它就会像这样运行。这将在Windows和OS X上都可以使用。


    如果需要通过双击运行jar文件,则必须将其创建为"可运行的JAR"。您只需使用IDE即可完成。

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

    1
    2
    3
    4
    5
    6
    7
    8
        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


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

    脚步 :

  • 打开命令提示符(以管理员身份运行)
  • 现在为根目录写" cd"命令
  • 键入" java jar filename.jar"
    注意:您还可以使用任何第三方应用程序,例如WinRAR,jarfix等。

  • 脚步:

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

    2.)在您的计算机上安装适当的版本


    创建.bat文件:

    1
    start javaw -jar %*

    然后选择"应用程序默认设置"以使用此.bat文件打开.jar

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


    对于编译:

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

    运行:

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

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

    打开文本文档并输入。 java -jar无论您叫什么.jar

    另存为start.bat与要执行的.jar文件位于同一文件夹中。然后运行。蝙蝠


    Create a .bat file:

    并在其中输入命令。在这里,您的命令将为java -jar path\yourJarName.jar

    保存并双击bat文件运行您的jar。
    您的文件名将如下所示:fileName.bat