我有一个名为helloworld.jar的 JAR 文件。为了运行它,我在命令行窗口中执行以下命令:
java -jar helloworld.jar
这工作正常,但我如何用双击来执行它呢?我需要安装任何软件吗?
我有一个名为helloworld.jar的 JAR 文件。为了运行它,我在命令行窗口中执行以下命令:
java -jar helloworld.jar
这工作正常,但我如何用双击来执行它呢?我需要安装任何软件吗?
最简单的方法可能是升级或重新安装 Java 运行时环境 (JRE)。
或这个:
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 文件并使其可在其他人的 Windows 计算机上运行,您可以在命令提示符下创建一个简单的 .bat 文件,如下所示:
java -jar MyJavaTool.jar
并将 .bat 文件放在与 .jar 文件相同的目录中。
如果您有一个名为 Example.jar 的 jar 文件,请遵循以下规则:
notepad.exe
java -jar Example.jar
.bat
.jar
文件的目录.jar
文件当在命令提示符下启动可运行的 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中,并在运行完成后将其清理干净,因此这可能是一个更优雅的解决方案。
首先在cmd(命令提示符)上设置路径:
set path="C:\Program Files\Java\jre6\bin"
然后输入
java -jar yourProgramname.jar
在 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 测试
有一种方法不需要用户在他的 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
}
}
除了所有其他建议之外,您还需要考虑另一件事。你的 helloworld.jar 是一个控制台程序吗?如果是的话,那么我不相信你能把它变成一个可双击的 jar 文件。控制台程序使用常规的 cmd.exe shell 窗口进行输入和输出。通常,jar“启动器”绑定到 javaw.exe,它不会创建命令外壳窗口。
在注册表中,打开HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command
双击左侧的默认值并在java.exe
路径和“ %1
”参数之间添加-jar。
我正在运行 Windows 7 x64 并且无法使用这些修复程序中的任何一个。
毕竟这个对我有用:
http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi
您可以下载包含要运行的 .bat 文件的存档,但请检查实际 javaw.exe 的路径!!!!
你想检查几件事;如果这是您自己的 jar 文件,请确保您已在清单中定义了 Main-class。既然我们知道您可以从命令行运行它,那么要做的另一件事是创建一个 Windows 快捷方式,并修改属性(您必须环顾四周,我没有 Windows 机器可以查看),以便它在打开时执行的命令是您提到的 java -jar 命令。
另一件事:如果没有混淆,它应该可以工作;检查并确保您有与 .jar 扩展名关联的 java。
不幸的是,这并不容易,因为微软在最近的 Windows 版本中删除了高级文件关联对话框。- 对于较新的 Windows 版本,您只能指定将用于打开 .jar 文件的应用程序。
修复在 Windows 上打开的 .jar 文件需要两个步骤。
打开控制面板,然后选择“默认程序 -> 设置关联”。在那里找到 .jar 扩展名(可执行 JAR 文件),然后选择 Java 作为默认程序来打开这个扩展名。它可能会被列为“ Java Platform(SE) ”。一个更快的选择可能是直接右键单击 .jar 文件,然后通过单击“更改...”按钮更改关联的程序。
现在打开注册表,然后打开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 窗口。创建.bat
文件:
start javaw -jar %*
并选择应用程序默认打开.jar
此.bat
文件。
cmd
启动.jar
文件时它将关闭。
通过单击/双击运行 jar 文件的另一种方法是在文件名前添加“-jar”。例如,您将文件重命名MyJar.jar
为-jar MyJar.jar
.
当然,您必须拥有与.class
关联的文件java.exe
。这可能不适用于所有情况,但对我来说大多数时候都有效。
我在 Windows 10 中遇到了同样的问题。我使用右键单击“ helloworld.jar ”并转到属性并单击“打开方式:”下的更改按钮并选择“在此 PC 上查找另一个应用程序”来修复它。在“打开方式... ”对话框中,转到 PC 上的 Java 文件夹位置并打开相应的 jdk 文件夹,然后打开bin文件夹并从中选择“ javaw.exe ”。然后下次你的“ helloworld.jar ”会以正常方式打开。
通常的 java 位置示例:“ C:\Program Files (x86)\Java\jdk1.8.0_111\bin ”。
PreScript:如果您的提示出现并立即消失,原因是您的程序被执行并自动关闭。尝试将扫描仪放在最后以终止,它会在终止之前让您的提示等待输入。(或者可能使用延迟)
在同样的情况下,从 cmd 运行 .jar 工作正常,但双击什么也没做。
解决方案:打开任意文本编辑器,编写命令行: java -jar Example.jar 将文件保存为.bat 文件。运行此 bat 文件以获取所需的输出。
更进一步,您可以使用简单的 GUI 工具(如 Bat To Exe Converter)将此 bat 文件转换为 exe 文件。
现在您可以将您的 .jar 作为 .exe 文件的分发版共享,任何人都可以使用它,只需确保将所有文件保存在一起。(特别是 .jar 和 .bat 文件,因为 .bat 只是一个 cmd 提示符)(感觉如何合乎逻辑)
我对开发和学习还很陌生。如果犯了任何错误,请原谅。欢迎提出建议。
在 Windows 10 上遇到了同样的问题
解决方案:
.jar
和javaw.exe
如果您使用 eclipse 制作您的 java 文件,您可以选择将其导出为可运行的 jar 文件。我用我的程序做到了这一点,我只需点击 jar,它就会像那样运行。这将适用于两个窗口以及 os x。
制作 start.bat 是唯一对我有用的东西。
打开一个文本文档并输入。java -jar不管你叫什么.jar
在与要执行的 .jar 文件相同的文件夹中另存为 start.bat。然后运行。蝙蝠
如果您需要通过双击来运行 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
在 Windows 上运行 .jar 文件有很多方法。其中之一是使用命令提示符。
脚步 :
使用
.bat
文件:
将您的命令放入 .bat 文件中。在这里,您的命令将是java -jar path\yourJarName.jar
.
Something like: java -jar C:\workspace\myApplication.jar
保存并双击bat文件运行你的jar。
脚步:
1.) 在 Google 上搜索 Java SE 运行时环境:https ://www.google.com/search?q=Java+SE+Runtime+Environment
2.)在您的计算机上安装适当的版本
对于编译:
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();
}
}
此代码(我的代码)仅适用于 jar 文件,而不适用于类文件。
jar 文件必须与字符串同名 “jarName” 是 Main 类