了解Java程序是否从CMD运行
我想编写一个通过文本接收输入的Java程序(控制台程序)。了解Java程序是否从CMD运行,java,cmd,Java,Cmd,我想编写一个通过文本接收输入的Java程序(控制台程序)。 当这个程序启动时,直接在main方法中,我希望能够检查这个程序是从命令提示符(cmd)还是从JAR文件启动的。这样,如果没有cmd接收输入,我就可以打开JFrame来接收输入 基本上是这样的: public static void main(String[] args){ if(startedFromCmd()) { startProgram(); } else{ openInputFra
当这个程序启动时,直接在main方法中,我希望能够检查这个程序是从命令提示符(cmd)还是从JAR文件启动的。这样,如果没有cmd接收输入,我就可以打开JFrame来接收输入 基本上是这样的:
public static void main(String[] args){
if(startedFromCmd()) {
startProgram();
} else{
openInputFrame();
startProgram();
}
}
是否有任何内置Java方法可以检查此问题?您可以使用
System.console()
,如果Java虚拟机上连接了console对象,它将返回一个console对象
如果没有附加控制台,则该方法返回null
。请注意,这不是100%可靠。例如,对于Eclipse IDE中的内部控制台,该方法返回null
(实际上是bug)。不过,它可以与Windows命令行一起使用
一个例子如下所示:
public static void main(String[] args)
{
if (System.console() != null)
{
System.out.println("There is a console!");
}
else
{
JFrame frame = new JFrame("There is no console!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100, 100);
frame.setVisible(true);
}
}
在Windows命令行中使用java-jar MyJar.jar
运行此命令将导致
有一个控制台代码>
正在控制台上打印
双击.jar文件将显示一个JFrame
您可以使用System.console()
,如果Java虚拟机连接了一个console对象,它将返回一个console对象
如果没有附加控制台,则该方法返回null
。请注意,这不是100%可靠。例如,对于Eclipse IDE中的内部控制台,该方法返回null
(实际上是bug)。不过,它可以与Windows命令行一起使用
一个例子如下所示:
public static void main(String[] args)
{
if (System.console() != null)
{
System.out.println("There is a console!");
}
else
{
JFrame frame = new JFrame("There is no console!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100, 100);
frame.setVisible(true);
}
}
在Windows命令行中使用java-jar MyJar.jar
运行此命令将导致
有一个控制台代码>
正在控制台上打印
双击.jar文件将显示一个JFrame
,您可以使用WMIC命令获取当前正在运行的CMD进程。但是,这仅适用于windows。对于unix/Mac,您可以使用类似于ps-ef | grep java的东西。
wmic进程,其中“名称如“%java%”获取命令行,processid
上面的命令将获取java进程列表,您可以在其中筛选出文件。请查找示例代码您可以使用WMIC命令获取当前正在运行的CMD进程。但是,这仅适用于windows。对于unix/Mac,您可以使用类似于ps-ef | grep java的东西。
wmic进程,其中“名称如“%java%”获取命令行,processid
上面的命令将获取java进程列表,您可以在其中筛选出文件。请查找一个示例代码如果它是使用jar文件从CMD启动的,该怎么办?实际上,您可以简单地检查您的程序是否收到了输入,或者是否使用了命令行参数的长度。因此,如果接收到输入,您可以简单地执行输入命令。如果没有收到input,请打开一个框架以接收用户的输入。可以同时从命令提示符和JAR文件启动Java程序。没有任何东西可以阻止您以任何方式打开JFrame
。不清楚你在问什么。嗯,是的,你可以从cmd启动一个JAR文件,但在这种情况下,它会在cmd中运行,不是吗?就这样说吧,;如果我使用System.out.println(“…”),那么文本将显示在哪里?如果它出现在cmd中,那么我不必打开JFrame,因为我可以将输入写入该cmd中。如果它是使用jar文件从cmd中启动的呢?实际上,您只需使用命令行参数的长度检查程序是否收到输入。因此,如果接收到输入,您可以简单地执行输入命令。如果没有收到input,请打开一个框架以接收用户的输入。可以同时从命令提示符和JAR文件启动Java程序。没有任何东西可以阻止您以任何方式打开JFrame
。不清楚你在问什么。嗯,是的,你可以从cmd启动一个JAR文件,但在这种情况下,它会在cmd中运行,不是吗?就这样说吧,;如果我使用System.out.println(“…”),那么文本将显示在哪里?如果它出现在cmd中,那么我就不必打开JFrame,因为我可以将输入写入cmdPerfect!!这正是我想要的=)完美!!这正是我要找的=)