我有一个名为helloworld.jar的JAR文件.为了运行它,我在命令行窗口中执行以下命令:
java -jar helloworld.jar
这工作正常,但如何通过双击执行它?我需要安装任何软件吗?
最简单的路由可能是升级或重新安装Java Runtime Environment(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
在Windows Vista或Windows 7中,已删除手动文件关联编辑器.
最简单的方法是运行Jarfix,一个小巧但功能强大的免费软件工具.只需运行它,您的Java应用程序就会重新启动......再次双击.
如果您需要分发.jar文件并使其可以在其他人的Windows计算机上运行,您可以在命令提示符中创建一个简单的.bat文件:
java -jar MyJavaTool.jar
并将.bat文件放在与.jar文件相同的目录中.
如果您有一个名为Example.jar的jar文件,请遵循以下规则:
打开一个 notepad.exe
写: java -jar Example.jar
用扩展名保存 .bat
将其复制到包含该.jar
文件的目录
双击它以运行您的.jar
文件
在命令提示符下启动可运行的jar文件时,这会产生一个有趣的副作用.
如果您尝试(在命令提示符下)
jarfile.jar参数
没有快乐,因为这被翻译成以下(不起作用):
javaw.exe -jar jarfile.jar参数
但是以下命令确实有效:
java.exe -jar jarfile.jar参数
如果您将文件管理器中的关联更改为:
"C:\ Program Files\Java\j2re1.4.2_04\bin\java.exe"-jar"%1"%*
然后你可以输入:
jarfile.jar参数
在命令提示符下,它现在可以工作!编辑:(但是,当你运行基于表单的(非控制台)Java应用程序时,你会得到一个黑色的控制台窗口,所以这不是一个理想的解决方案)
如果你通过在windows中双击它们来运行这些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测试
有办法不需要用户在他的电脑上进行更改.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,它不会创建命令shell窗口.
我正在运行Windows 7 x64,但无法使用任何这些修复程序.
这个对我来说是有用的:
http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi
有一个存档,您可以下载包含要运行的.bat文件,但检查实际javaw.exe的路径!