在Windows上运行JAR文件

问题描述 投票:198回答:25

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

java -jar helloworld.jar

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

java jar executable-jar
25个回答
114
投票

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

或这个:

  • 打开Windows资源管理器,从工具选择'文件夹选项...'
  • 单击“文件类型”选项卡,向下滚动并选择“JAR文件类型”。
  • 按“高级”按钮。
  • 在“编辑文件类型”对话框中,选择“操作”框中的“打开”,然后单
  • 按Browse按钮并导航到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


5
投票

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

这个对我来说很有用:

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

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


3
投票

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

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


2
投票

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

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


1
投票

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

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

  1. 打开“控制面板”,然后选择“默认程序 - >设置关联”。在那里找到.jar扩展名(可执行文件JAR文件),并选择Java作为默认程序来打开此扩展名。它可能会被列为“Java平台(SE)”。更快的替代方案可能是直接右键单击.jar文件,然后通过单击“更改...”按钮更改关联的程序。
  2. 现在打开注册表,然后打开HKEY_CLASSES_ROOT\jarfile\shell\open\command键。 Luckilly对我们来说,我们可以为(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工具很可能只是为您修改注册表。我更喜欢手动注册表更改方法,因为这意味着系统管理员可以将注册表更改“推送”到网络中的所有工作站。

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文件以获取所需的输出。

向前迈出一步,你可以使用像Bat To Exe Converter这样的简单GUI工具将这个bat文件转换为exe文件。

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

我对开发和学习很了解。如有任何错误,请原谅。欢迎提出建议。


0
投票

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


0
投票

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

打开文本文档并输入。 java -jar你的名字叫.jar

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


0
投票

如果需要通过双击运行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


77
投票

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

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


0
投票

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

脚步 :

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

0
投票

脚步:

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

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


0
投票

创建.bat文件:

start javaw -jar %*

并选择app default以使用此.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;
       }
   }
}

然后在Your 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文件必须与String“jarName”具有相同的名称是Main类

-1
投票

在jar目录(jar存在的位置)中,创建一个.bat扩展名和java -jar yourJarName.jar内容的文件并保存。

现在你可以双击这个bat文件来运行你的jar。


48
投票

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

java -jar MyJavaTool.jar

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


23
投票

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

  1. 打开一个notepad.exe
  2. 写道:java -jar Example.jar
  3. 用扩展名.bat保存
  4. 将其复制到具有.jar文件的目录
  5. 双击它以运行您的.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 

8
投票

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


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,它不会创建命令shell窗口。

© www.soinside.com 2019 - 2024. All rights reserved.