如何让我的java应用程序打开控制台/终端窗口?

Cal*_*YSR 11 java executable-jar console-application

有没有什么办法可以制作一个可执行的.jar,它会在双击时打开命令行?

我正在制作一个基于文本的冒险游戏.截至目前,它只是一个有房间的迷宫.最终它会变得更大更深入,但是现在我只想让基本结构失效.无论如何,为了完成这项工作,我一直在从System.out.printf命令和java.util.Scanner获取输出和输入.到目前为止,这一切都工作得很漂亮,但我发现当我尝试将这个问题发送给其他不知道如何或者不想从命令行运行程序的人时,我会遇到问题.

小智 16

我在寻找答案的同时找到了这个,我最后写了这个:

/**
 * This opens a command line and runs some other class in the jar
 * @author Brandon Barajas
 */
import java.io.*;
import java.awt.GraphicsEnvironment;
import java.net.URISyntaxException;
public class Main{
    public static void main (String [] args) throws IOException, InterruptedException, URISyntaxException{
        Console console = System.console();
        if(console == null && !GraphicsEnvironment.isHeadless()){
            String filename = Main.class.getProtectionDomain().getCodeSource().getLocation().toString().substring(6);
            Runtime.getRuntime().exec(new String[]{"cmd","/c","start","cmd","/k","java -jar \"" + filename + "\""});
        }else{
            THEMAINCLASSNAMEGOESHERE.main(new String[0]);
            System.out.println("Program has ended, please type 'exit' to close the console");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不确定我的答案是否仍然相关,但随意将其与o /中的评论一起使用

我能想到的唯一缺陷就是它在程序完成后让cmd窗口保持打开状态.

用法:将此类放在与主类相同的包中并将其设置为主类,如果未打开,则打开命令提示符窗口,或者如果打开一个命令提示符窗口,则启动主类.jar文件的名称/位置是自动的.专为Windows设计,但如果你想要它用于另一个系统,只需给我留言,我就会解决它.(我可以做OS检测,但我很懒,只是这样做,所以我可以将双击jar文件交给我使用windows的教授).


Tho*_*sen 6

如果您想要完全控制,可以在Swing中实现一个控制台窗口,它可以完成现在的操作.

如果您无法打开所述窗口(如果无头)或用户在命令行上询问它,那么只需默认为您当前的行为.