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

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

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

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

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

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

/** * 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设计,但如果你想要它用于另一个系统,只需给我留言,我就会解决它。 (我可以做OS检测,但我很懒,只是这样做,所以我可以将双击jar文件交给我使用windows的教授)。

双击一个jar会打开它,使用您在操作系统中与其关联的任何应用程序。 默认情况下,javaw [.exe]通常与jar文件相关联。 这是没有终端窗口的二进制文件。 要在双击时查看终端,您需要将java [.exe]二进制文件与jar文件相关联。

或者你可以提供一个.sh .bat,它将打开一个终端并在其中调用你的java。

只要使用java.exe执行.jar,就会始终显示命令行窗口。 用javaw.exe执行它会阻止这个。

进一步阅读: http : //download.oracle.com/javase/1.4.2/docs/tooldocs/windows/java.html

所以这是我的解决方案,我使用了@Brandon Barajas的代码并对其进行了修改。 它创建一个批处理文件,它自己启动程序。

 public static void main(String[] args){ Console console = System.console(); if(console == null && !GraphicsEnvironment.isHeadless()) { String filename = YOURMAINCALSS.class.getProtectionDomain().getCodeSource().getLocation().toString().substring(6); try { File batch = new File("Launcher.bat"); if(!batch.exists()){ batch.createNewFile(); PrintWriter writer = new PrintWriter(batch); writer.println("@echo off"); writer.println("java -jar "+filename); writer.println("exit"); writer.flush(); } Runtime.getRuntime().exec("cmd /c start \"\" "+batch.getPath()); } catch(IOException e) { e.printStackTrace(); } } else { //your program code... } } 

如果你想要,你可以添加一个writer.println(“暂停”);“退出”打印之前,在程序完成后保持窗口打开。 然后,您需要按ENTER键关闭窗口。

我想最简单的方法是为你的jar文件编写一个简单的快捷方式。 例如eclipse(像大多数ide一样)能够导出包含所有必需库等的jar文件,所以你只需要设置快捷命令,如“java -jar filePath / file.jar”(filePath:eg ./bin/) file.jar)

实现此目的的一种方法是使用以下命令创建.bat文件:“java -jar filePath / yourfile.jar”(不带“”)。 确保包含文件路径,否则将找不到您的文件。 虽然问题已经得到解答,但这是一种简单的方法。

您可以使用Swing或Awt创建自己的窗口,使用TextPane,唯一的问题是如何输入和使用,就像cmd应该做的那样。 但你可以随时通过警报和所有……

其他方式,直接从批处理文件运行,显示在控制台上。

你也应该考虑,批量制作你的游戏……这不是一个糟糕的语言,并且存在于每个Windows操作系统上。

(希望是有用的(’因为我是新的),我的英语不是那么糟糕…)

  1. 使用Launch4j并在Basic选项卡中输出您的输出文件中的exe名称,然后在Jar选项卡中加载一个jar文件。
  2. 转到标题选项卡,然后选择控制台。
  3. 然后转到JRE选项卡并提供JRE版本,例如1.8.0
  4. 然后单击构建包装器按钮(种类设置图标)
  5. 它会要求您保存一个xaml文件,只需输入一些随机名称并单击“保存”。
  6. 最后,您的.exe已创建,您现在可以运行了。