在Windows上运行JAR文件

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

这工作得很好,但我如何执行它与双击代替? 我需要安装什么软件吗?< / p >

1493340 次浏览

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

另一件事是:如果某个东西没有混淆,它就应该工作;检查并确保已将Java与.jar扩展名关联。

最简单的方法可能是升级或重新安装Java运行时环境(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

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

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

为了在windows中传递参数,您必须创建一个jar文件的快捷方式,该快捷方式包括目标行中的参数(右键单击快捷方式并选择属性),您不能以这种方式将参数添加到jar文件图标本身。

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

有一个windows免费应用程序叫做“bat to exe”,你可以用它从一个。bat文件创建一个exe文件,里面有适当的命令行。您还可以将jar文件嵌入到这个应用程序的exe中,并在它完成运行时清理它,因此这可能是一个更优雅的解决方案。

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

最简单的方法是运行Jarfix,这是一个很小但功能强大的免费工具。只要运行它,你的Java应用程序就回来了…会了。

在Windows XP 中,你只需要2个壳牌命令:

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

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

  1. 打开notepad.exe
  2. 写入:java -jar Example.jar
  3. 保存扩展名为.bat
  4. 将其复制到包含.jar文件的目录
  5. 双击它来运行你的.jar文件

如果你需要分发你的.jar文件,让它可以在其他人的Windows电脑上运行, 您可以在命令提示符中创建一个简单的.bat文件,如下所示

java -jar MyJavaTool.jar

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

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

这条对我来说还是有用的:

http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi < a href = " http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi " > < / >

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

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

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

然后输入

java -jar yourProgramname.jar

如果使用eclipse生成java文件,可以选择将其导出为可运行的jar文件。我用我的程序做了这个,我只要点击罐子,它就会像这样运行。这将工作在两个windows,以及os x。

有一种方法不需要用户在他的PC上做改变。runtime . getrtime .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
}
}

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

双击左边的default,在java.exe路径和"%1"参数之间添加-jar。

开始。球棒是唯一对我有用的东西。

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

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

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

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

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

  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,因为它会打开shell窗口。
  • 这个线程中提到的jarfix工具很可能只是为你修改注册表。我更喜欢手动注册表更改方法,因为这意味着系统管理员可以将注册表更改“推送”到网络中的所有工作站。
运行jar文件的另一种方法是单击/双击,将“-jar”前置到 文件的名字。例如,将文件MyJar.jar重命名为-jar MyJar.jar.

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

如果你需要双击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帮助页:链接中找到

我在Windows 10上也遇到了同样的问题。我在“helloworld.jar”上使用righ-click修复了它,并转到属性,单击“打开:”下的改变按钮,并选择“在这台电脑上寻找另一个应用程序”。在“打开……”对话框中,转到PC上的Java文件夹位置,打开相应的jdk文件夹,然后打开箱子文件夹,并从那里选择“javaw.exe”。然后下次你的“helloworld.jar”将以正常方式打开。

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

在windows上运行.jar文件有很多方法。其中一个正在使用命令提示符。

步骤:

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

使用.bat文件:

把你的命令放在一个。bat文件中。在这里,你的命令将是java -jar path\yourJarName.jarSomething like: java -jar C:\workspace\myApplication.jar < / p >

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

规定的:如果你的提示符出现并立即消失,它这样做的原因是你的程序被执行并自动关闭。尝试在最后放置一个扫描器来终止,它会让您的提示符在终止之前等待输入。(或者使用延迟)

在完全相同的情况下,从cmd运行.jar工作正常,但双击没有任何作用。

< p >解决方案: 打开任何文本编辑器并编写命令行: java -jar示例 将文件保存为.bat文件。

. bat文件

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

现在你可以把你的.jar文件以。exe文件的形式共享,任何人都可以使用,只要确保你把所有文件放在一起。(特别是.jar和.bat文件,因为.bat只是一个cmd提示符)(感觉如何逻辑)

对于开发和学习,我还是个新手。如有错误,请原谅。欢迎提出建议。

步骤:

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

2.)在你的电脑上安装合适的版本

创建.bat文件:

start javaw -jar %*

然后选择app default,用这个.bat文件打开.jar

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

编译:

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

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

请注意

  1. 这段代码(我的代码)只适用于jar文件,而不是类文件。

  2. jar文件必须与字符串名称相同。是Main类

得到同样的问题,在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 < / >