Answers:
最简单的方法可能是升级或重新安装Java Runtime Environment(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文件时,这会引起一个有趣的副作用。
如果尝试(在命令提示符下):
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中,并在完成运行后对其进行清理,因此这可能是一个更优雅的解决方案。
在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窗口作为输入和输出。通常,罐子“启动器”绑定到javaw.exe,而后者不会创建命令外壳窗口。
我正在运行Windows 7 x64,无法使用任何这些修复程序。
毕竟这对我有用:
http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi
您可以下载一个包含要运行的.bat文件的存档,但是请检查实际javaw.exe的路径!!!
在regedit中,打开 HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command
双击左侧的默认值,然后在java.exe
路径和“ %1
”参数之间添加-jar 。
不幸的是,这并不容易,因为Microsoft在最近的Windows版本中删除了高级文件关联对话框。-对于较新的Windows版本,您只能指定将用于打开.jar文件的应用程序。
修复Windows上的.jar文件打开需要两个步骤。
打开控制面板,然后选择“默认程序->设置关联”。在此处找到.jar扩展名(可执行JAR文件),然后选择Java作为默认程序以打开此扩展名。它可能会被列为“ Java Platform(SE) ”。更快的替代方法可能是直接在.jar文件上单击鼠标右键,然后通过单击“更改...”按钮更改关联的程序。
现在打开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
在此处使用,因为它会打开外壳窗口。我在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 ”。
PreScript:如果提示出现并立即消失,则其原因是程序被执行并自动关闭。尝试将扫描仪末端放置以终止,它将在终止之前让您的提示等待输入。(或者使用延迟)
在同样的情况下,从cmd运行.jar可以正常工作,但是双击却无济于事。
解决方案:打开任何文本编辑器并编写命令行:java -jar Example.jar将文件另存为.bat文件。运行此bat文件以获取所需的输出。
向前迈出一步,您可以使用简单的GUI工具(如Bat To Exe Converter)将此bat文件转换为exe文件。
现在,您可以在.exe文件中以分发形式共享您的.jar,任何人都可以使用,只需确保将所有文件放在一起即可。(特别是.jar和.bat文件导致.bat只是一个cmd提示符)(感觉如何合理)
我对开发和学习非常陌生。如果犯了任何错误,请原谅。欢迎提出建议。
使用
.bat
文件:
将命令放在.bat文件中。在这里,您的命令将为java -jar path\yourJarName.jar
。
Something like: java -jar C:\workspace\myApplication.jar
保存它,然后双击bat文件运行您的jar。您的文件名将类似于fileName.bat
如果使用eclipse制作Java文件,则可以选择将其导出为可运行的jar文件。我是用我的程序做到这一点的,我只需单击jar,它就会像这样运行。这将在Windows和OS X上都可以使用。
制作start.bat是唯一对我有用的东西。
打开一个文本文档并输入。java -jar 无论您叫什么 .jar
另存为start.bat与要执行的.jar文件位于同一文件夹中。然后运行。蝙蝠
如果您需要通过双击运行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.)在Google上搜索Java SE Runtime Environment:https : //www.google.com/search?q= Java+SE+Runtime+Environment
2.)在您的计算机上安装适当的版本
实际上,我也遇到了这个问题,我通过为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();
}
}
此代码(我的代码)仅适用于jar文件,而不适用于类文件。
jar文件必须与主类的字符串“ jarName”具有相同的名称