Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Windows命令行调用jar文件时System.out不工作_Java_Eclipse_Jar_Executable Jar - Fatal编程技术网

Java 从Windows命令行调用jar文件时System.out不工作

Java 从Windows命令行调用jar文件时System.out不工作,java,eclipse,jar,executable-jar,Java,Eclipse,Jar,Executable Jar,我有这门课: 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文件时,什么都没有发

我有这门课:

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,但是没有什么区别。有人知道我怎样才能做到这一点吗

谢谢

您必须使用

java -jar test.jar
(必须将JRE的bin文件夹添加到路径中,才能从任何位置执行命令)


注意:我知道您是使用Eclipse创建JAR的,但您可能想知道,当您使用“test.JAR”调用JAR时,应用程序的启动会被传递给JAR文件的注册java处理程序,而JAR文件不会在命令行上下文中运行。
默认的jar处理程序不会打开基于控制台的系统。{out,err}文件处理程序,因为这意味着每个启动的jar文件都有一个cmd样式的窗口,这不是一个理想的情况。

前面的答案是使用java-jar test.jar,它将在当前cmd窗口的上下文中运行,因此您将看到输出。

前面的答案是正确的,因此我将稍微澄清一下“可执行jar”的概念。 在“可执行jar”中,没有“可执行jar”(相当于windows中的exe文件)这样的东西。在“可执行jar”中,您将只指定“入口”点(默认情况下您希望执行的主类)

jar基本上只是一个归档文件,您仍然需要java来实际启动jar(java-jar-your.jar)

事实上,在windows中,您可能与javaw.exe有关联,这意味着当您双击jar时,操作系统将启动它,就像用记事本自动打开.txt文件一样,它不会使.txt成为可执行文件

请同时查看以下内容:

如何从命令行调用jar文件?您看到了什么输出(如果有的话)?最有可能的是jar文件没有执行。我更新了我的问题,以更清楚地指出我非常确定jar文件正在执行,并说明我如何调用它。我相信这个答案是正确的。仅执行“test.jar”可能会使用“javaw.exe”,这是默认情况下与.jar文件关联的“java.exe”的无控制台版本。JRE将自己安装在Windows pr默认路径中,因此“java.exe”应在此后立即可用。