2011-12-27 130 views
1

为了方便,我将使用的hello world ...如何创建一个.jar运行命令行应用程序

public class HelloWorld{ 

    public static void main (String [] args){ 
     System.out.println("Hello World"); 
    } 
} 

编译和运行细如你想象。然后,由包含文件Manifest.txt:

Main-Class: HelloWorld 

然后跑:

jar -cfm Hello.jar Manifest.txt *.class 

然而,当我双击生成的Hello.jar,没有任何反应。我希望控制台至少快速弹出... (我其实有一个更精细的程序,等待输入)

任何想法,为什么这不工作?

它已经开始在任务管理器(Windows),但没有CMD开通

+0

当您使用'java -jar Hello.jar'在命令行运行程序时会发生什么? – tscho 2011-12-27 15:46:06

+0

但我想把我的罐子送给没有电脑的人。我需要双击才能工作 – Mead3000 2011-12-27 15:47:55

+0

嗯,我刚刚问过如果从命令行运行它会发生什么。在这种情况下你有任何错误吗? – tscho 2011-12-27 15:51:02

回答

1

尝试从命令行执行过程

java -jar /path/to/YourJar.jar 

请确保您有Main-Class进入


另见

+0

好的,但我想把我的罐子发送给没有电脑的人。我需要双击才能工作 – Mead3000 2011-12-27 15:47:18

+0

那么你需要你的客户端让JRE运行那个jar。你还可以设置默认程序来根据操作系统打开'.jar'文件作为'JRE'。 – 2011-12-27 15:48:42

+0

好....我怎么才能让它工作。在窗口 – Mead3000 2011-12-27 15:52:04

2

请确保该Main-Class线清单文件后面跟着一个空行!
很难相信,但规范要求清单文件的每一行(包括最后一行)都以换行符结尾。

编辑:
如果问题只是双击,尝试(假设Windows)中:

assoc .jar=jarfile 
ftype jarfile="<JRE directory>\bin\javaw.exe" -jar "%1" %* 

(使用这些无参数检查实际设置)

你的客户会需要JRE来运行Java程序 - 上述设置通常是通过安装JRE来完成的。

EDIT2:
使用java.exe而不是javaw.exe看到标准的控制台(如果你的程序不具有GUI)

+0

它是谢谢... – Mead3000 2011-12-27 15:49:29

+0

检查任务管理器后,它正在启动一个javaw.exe进程..但没有cmd正在打开 – Mead3000 2011-12-27 16:04:29

+0

javaw是java无窗口。不会有*窗口*可见;) – jpalm 2011-12-27 16:08:34

0

清单需要被命名为MANIFEST.MF,它需要驻留在顶层名为META-INF的目录。那么它应该工作。

+0

我很确定那些是在创建时该jar被创建。 jar -tf Hello.jar给了我 – Mead3000 2011-12-27 15:54:05

0

您应该试一试JSmooth。它将您的jar文件包装到Windows可执行文件中。

相关问题