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

标签 java console-application executable-jar

有什么方法可以制作一个可执行文件 .jar,在双击时打开命令行?

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

最佳答案

我在自己寻找答案时发现了这个,最后我写了这个:

/**
 * 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");
        }
    }
}

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

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

使用方法:把这个类和你的主类放在同一个包里,设置为主类,如果没有打开就会打开一个命令提示符窗口,如果打开了就启动主类。 jar 文件的名称/位置是自动的。专为 Windows 设计,但如果您想要它用于其他系统,请给我发消息,我会修复它。 (我可以做操作系统检测,但我很懒,只是做这个,所以我可以将双击 jar 文件交给我使用 Windows 的教授)。

关于java - 如何让我的 Java 应用程序打开控制台/终端窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7704405/

相关文章:

java - 从jsp调用aspx页面

java - 看不懂非递归MergeSort算法

c# - 缺少命名空间或程序集引用时出错

java - Spring boot (Maven) 运行时未找到外部 jar 类

java - 与 Procrun 一起安装的 Windows 服务在//TS 模式下工作,但不会作为 Windows 服务启动,提示它 "started and then stopped"

java - 如何测试复杂的异步网络代码并遵循 TDD

java - jvm堆设置模式

Clojure(读行)不等待输入

c++ - 如何在 C++ 控制台应用程序中控制光标位置?

java - 当我们运行可执行 jar 时,-cp 是否会受到尊重