在Windows上运行JAR文件


228

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

java -jar helloworld.jar

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


1
请按照此处描述的步骤操作:在Vista上双击执行Jar
RealHowTo

Answers:


123

最简单的方法可能是升级或重新安装Java Runtime Environment(JRE)。

或这个:

  • 打开Windows资源管理器,从“工具”中选择“文件夹选项...”
  • 单击文件类型选项卡,向下滚动并选择JAR文件类型。
  • 按“高级”按钮。
  • 在“编辑文件类型”对话框中,选择“在操作中打开”框,然后单击“编辑...”。
  • 按下浏览按钮,然后导航到Java解释器javaw.exe的位置。
  • 在“用于执行操作的应用程序”字段中,需要显示类似以下内容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


13
我认为简单的方法是右键单击任何.jar文件,然后单击打开,然后选择“ Java运行时环境”。:)
Kassem

这样做,总是给我这个错误“ Java平台SE二进制文件已停止工作”。
Faizan

1
@Faizan-您的问题听起来像是一个单独的问题。我看到一些“ Java平台SE二进制已停止工作”的SO和Google结果。我会检查出来的。
Brian Kelly

26
Win 7
Radu Simionescu

79

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

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


感谢您的提示,如果只有一种方法可以摆脱这些小的(非)“可用”新盒子
LoG 2012年

55

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

java -jar MyJavaTool.jar

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


但是.bat如何执行?是否也将使Java应用程序打开命令行会话的策略相同?
Ungeheuer

1
好吧,不,您只需打开bat文件。我不确定我是否理解您的问题。

26

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

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

4
1)在Mac上不起作用。或Unix。2)创建不必要的文件。3)两年前提供了更好的答案。4)..那个词是“你”。
安德鲁·汤普森

在Windows上运行jar的好方法!它也不会隐藏命令行输入,因此我能够看到为什么我的jar不能按我认为的那样运行。谢谢。

15

在命令提示符下启动可运行的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中,并在完成运行后对其进行清理,因此这可能是一个更优雅的解决方案。


11

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

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

然后输入

java -jar yourProgramname.jar 

9

在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,它会起作用。
杰里米·斯坦因

我眼中的最佳解决方案。在Windows 10上均可使用。ftype和assoc命令应在具有管理员权限的命令提示符窗口中运行。
SixDoubleFiveTreeTwoOne

7

有一种方法无需用户在自己的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
    }
}

6

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



4

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

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


就是这样 谢谢。所有其他事情都没有帮助。
raedma '17

3

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

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


1

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

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

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

  2. 现在打开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工具很可能只为您修改注册表。我更喜欢手动更改注册表的方法,因为这意味着系统管理员可以将注册表更改“推送”到网络中的所有工作站。

1

我在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 ”。


1

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

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


1

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

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

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

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

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

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


1

使用.bat文件:

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

保存它,然后双击bat文件运行您的jar。您的文件名将类似于fileName.bat


0

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



0

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

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

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


0

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


0

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

脚步 :

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


0

创建.bat文件:

start javaw -jar %*

然后选择“应用默认设置”以.jar使用此.bat文件打开。

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


0

对于编译:

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

0

实际上,我也遇到了这个问题,我通过为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;
       }
   }
}



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

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”具有相同的名称

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.