为了方便我将使用你好世界...
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时,没有任何反应。我希望控制台至少快速弹出...... (事实上,我有一个更精细的程序,等待输入)
为什么这不起作用?
它正在任务管理器(窗口)中启动一个进程,但没有cmd打开
答案 0 :(得分: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)
答案 1 :(得分:1)
答案 2 :(得分:0)
清单需要命名为MANIFEST.MF,它需要驻留在名为META-INF的顶级目录中。然后它应该工作。
答案 3 :(得分:0)
您应该尝试JSmooth。它将您的jar文件包装到Windows可执行文件中。