ChatGPT解决这个技术问题 Extra ChatGPT

在 Windows 上运行 JAR 文件

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

java -jar helloworld.jar

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

按照此处描述的步骤操作:Executing a Jar on Vista with a double click

b
badp

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

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

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


如果某个地方的某个人可以详细说明这个可执行文件所做的更改,那就太好了,以便有人可以选择手动重复它而不执行一些随机的陌生人编译的代码。
D
Demorf

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

java -jar MyJavaTool.jar

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


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

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

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


在 Windows 上运行 jar 的好方法!它也没有隐藏命令行输入,所以我可以看到为什么我的 jar 没有像我想的那样运行。谢谢你。
C
CarenRose

当在命令提示符下启动可运行的 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 文件,则不会传递任何参数,因此您的 Java 代码需要处理堆栈溢出异常并在末尾包含“按键”功能,否则窗口将消失。

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

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

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


C
Chris Gerken

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

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

然后输入

java -jar yourProgramname.jar 

u
user85421

在 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 应在具有管理员权限的命令提示符窗口中运行。
d
dario111cro

有一种方法不需要用户在他的 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
    }
}

S
Sachith Wickramaarachchi

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

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


就是这样。谢谢。所有其他的事情都没有帮助。
4 年后 AdoptOpenJDK Java 11 - 唯一有效的解决方案。谢谢你。
佚名

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


l
lawid

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

毕竟这个对我有用:

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

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


C
Charlie Martin

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

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


D
DejanLekic

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

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

打开控制面板,然后选择“默认程序 -> 设置关联”。在那里找到 .jar 扩展名(可执行 JAR 文件),然后选择 Java 作为默认程序来打开这个扩展名。它可能会被列为“Java 平台(SE)”。一个更快的选择可能是直接右键单击 .jar 文件,然后通过单击“更改...”按钮更改关联的程序。现在打开 regedit,然后打开 HKEY_CLASSES_ROOT\jarfile\shell\open\command 键。对我们来说幸运的是,我们可以在那里为(默认)值指定参数。在我的 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。
h
hong4rc

创建 .bat 文件:

start javaw -jar %*

并选择应用程序默认打开此 .bat 文件的 .jar

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


这是通过单击java 11启动jar的唯一正确答案。但是您需要再做一次:卸载较低的jdks(可选),右键单击jar文件->打开方式->选择另一个应用程序->检查“总是使用...”复选框->此组合(或此类)上的应用程序->导航到bat->启动
s
skaveesh

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

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


不适用于我的 Win10。也没有 Java/JDK,只有 Java/JRE 文件夹
S
Sachith Wickramaarachchi

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

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


M
Manthan_Admane

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

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

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

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

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

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


k
kak7

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

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


佚名

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


根据这个question,似乎不能保证工作
f
freeloaderzful

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

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

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


N
Nomesh DeSilva

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


1
151291

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

脚步 :

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


i
iorgu

脚步:

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

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


Z
Zoe stands with Ukraine

对于编译:

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

E
Eboubaker

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

请注意

此代码(我的代码)仅适用于 jar 文件,而不适用于类文件。 jar 文件必须与字符串同名 “jarName” 是 Main 类


B
Bandham Manikanta

使用 .bat 文件:

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

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