我有这堂课:
public class Test {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
我使用Eclipse的“Export to runnable JAR”函数将其转换为可执行的jar文件(test.jar)。当我在Eclipse中运行这个程序时,它打印出“Hello World!”,但是当我从命令行调用jar文件时,没有任何反应。
我试过像这样调用jar文件:
test.jar
test.jar -jar
没有任何输出。
我有另一个程序也有副作用(除了输出到stdout)并且正在执行副作用(告诉我jar文件肯定已执行),同样没有给命令输出线。我也尝试过使用stderr,但这没什么区别。有谁知道我怎么做这个工作?
谢谢!
答案 0 :(得分:32)
您必须使用
运行 JARjava -jar test.jar
(您的JRE的bin文件夹必须添加到PATH才能从任何位置使命令正常工作)
注意:我知道您使用Eclipse创建了JAR,但您可能想知道how does an executable JAR works
答案 1 :(得分:8)
之前的答案是正确的,所以我只是澄清一下“可执行jar”的概念。 没有“可执行jar”这样的东西,相当于windows中的exe文件,在“可执行jar”中你只会指定“入口”点(你想要默认执行的主类)
jar基本上只是一个存档,你仍然需要java来实际启动jar(java -jar your.jar)
在Windows中你可能与javaw.exe有关联的事实意味着当你双击jar时操作系统会启动它,就像用记事本自动打开的.txt文件一样,它不会.txt是一个可执行文件。
同时检查一下: JAR files revealed
答案 2 :(得分:3)
当您使用'test.jar'调用jar时,应用程序的启动将被传递给jar文件的已注册java处理程序,该处理程序不会在命令行的上下文中运行。
默认的jar处理程序不会打开基于控制台的System。{out,err}文件句柄,因为它意味着每个启动的jar文件的cmd样式窗口,这不是一个理想的情况。
上一个答案,使用java -jar test.jar使它在当前cmd窗口的上下文中运行,因此您将看到输出。