在Windows上运行JAR文件

时间:2008-12-27 03:19:38

标签: java jar executable-jar

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

java -jar helloworld.jar

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

26 个答案:

答案 0 :(得分:109)

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

答案 1 :(得分:76)

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

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

答案 2 :(得分:47)

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

java -jar MyJavaTool.jar

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

答案 3 :(得分:23)

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

  1. 打开notepad.exe
  2. 写:java -jar Example.jar
  3. 使用附加信息.bat
  4. 保存
  5. 将其复制到具有.jar文件
  6. 的目录
  7. 双击它以运行.jar文件

答案 4 :(得分: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文件中,并在运行完成后将其清理干净,这可能是一个更优雅的解决方案。

答案 5 :(得分:11)

cmd上的第一个设置路径(命令提示符):

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

然后输入

java -jar yourProgramname.jar 

答案 6 :(得分: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 :(得分: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
    }
}

答案 8 :(得分:6)

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

答案 9 :(得分:5)

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

毕竟这个对我有用:

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

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

答案 10 :(得分:3)

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

另一件事:如果事情没有混淆,无论如何都应该有效;检查并确保你有与.jar扩展名相关联的java。

答案 11 :(得分:2)

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

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

答案 12 :(得分:1)

在 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

答案 13 :(得分:1)

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

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

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

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

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

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

答案 14 :(得分:1)

我在Windows 10中遇到了同样的问题。我使用“ helloworld.jar ”上的 righ-click 修复了它,然后转到属性然后点击“打开方式:”下的更改按钮,然后选择“在此电脑上查找其他应用”。在“打开方式... ”对话框中,转到PC上的Java文件夹位置并打开相应的jdk文件夹,然后打开 bin 文件夹并选择“<强> javaw.exe “从那里。然后,下次“ helloworld.jar ”将以正常方式打开。

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

答案 15 :(得分:1)

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

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

答案 16 :(得分:1)

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

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

  1. 打开控制面板,然后选择&#34;默认程序 - &gt;设置关联&#34;。在那里找到.jar扩展名(可执行文件JAR文件),然后选择Java作为默认程序来打开此扩展名。它可能会被列为&#34; Java平台(SE)&#34;。更快的替代方案可能是直接右键单击.jar文件,然后通过单击&#34;更改...&#34;更改关联的程序。按钮。

  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" %*

  3. 注意:

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

答案 17 :(得分:0)

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

如果您正在使用eclipse,请按以下步骤操作:

for($day1=$day; $day1<=2; $day1++)
{
    $option = array('day' => $day1)
    $train = $train_xpath->query('//li/div/div[contains(@class, "smallFont farelist")]');
    if($train->length > 0)
    {
        foreach($train as $f) 
        {
            $time_s =  $train_xpath->evaluate('string(./div[@class="train-time"]/text()[1])', $f);
            $time_e =  $train_xpath->evaluate('string(./div[@class="train-time"]/text()[2])', $f);
            $fare = $train_xpath->evaluate('string(./div[@class="train-info"]/div/div[@class="total-price"])', $f);
            $option["value"][]=  array('flight_no' => $train_xpath->evaluate('string(./div[@class="train-no"])', $f),
                                                         'departure_time' => "$time_s ",
                                                         'arrival_time' => "$time_e ",
                                                         'price' => $fare );

                        }
    }
    $train_list['option'][] = $option;
}

可以在Eclipse帮助页面上找到更多信息:LINK

答案 18 :(得分:0)

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

步骤:

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

答案 19 :(得分:0)

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

打开文本文档并输入。 java -jar 无论你的名字是什么 .jar

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

答案 20 :(得分:0)

步骤:

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

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

答案 21 :(得分:0)

创建.bat文件:

start javaw -jar %*

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

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

答案 22 :(得分: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

答案 23 :(得分: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.   
  3. jar文件的名称必须与主类的字符串“ jarName”相同

  4.   

答案 24 :(得分:0)

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

答案 25 :(得分:-1)

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

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