Java ワンポイント ~コンソールをリフレッシュする~

イントロダクション

テキストRPGを作成中です。
コンソールのみで展開する仕様なので、コンソールのれふれっふ処理が必要になりました。

調べたので、アップしておきます。

Javaからコマンドを実行する

具体的には、コンソール画面(コマンドプロンプト(Win)やターミナル(Mac))でのコマンド実行をJavaプログラムから実行するということになります。

こちらのサイトを参考にすると、実行方法としては以下のようにコードを書きます。

Rumtime.getRuntime().exec(コマンド);

しかし、下のようなエラーが出ました。

java.io.IOException: Cannot run program "cls": CreateProcess error=2, 指定されたファイルが見つかりません。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:621)
at java.lang.Runtime.exec(Runtime.java:451)
at java.lang.Runtime.exec(Runtime.java:348)
at jp.zenryoku.rpg.util.ConsoleUtils.clearConsole(ConsoleUtils.java:172)
at jp.zenryoku.rpg.TextRpgLogic.updateData(TextRpgLogic.java:115)
at jp.zenryoku.rpg.TextRpgGameEngine.start(TextRpgGameEngine.java:40)
at jp.zenryoku.rpg.GameMain.main(GameMain.java:16)
Caused by: java.io.IOException: CreateProcess error=2, 指定されたファイルが見つかりません。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init(ProcessImpl.java:444)at java.lang.ProcessImpl.start(ProcessImpl.java:139)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 7 more

EclipseからMainメソッドを起動した場合でした。

Fix

調べてみると下のようなコードでコンソールをクリアdできるようだ。

new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();

ただし、Eclipseではちゃんとクリアできないが、JARファイルから起動したときはちゃんとクリアされた。

関連ページ一覧

EclipseセットアップWindows版

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜