2016-06-18 9 views
3

Ideaがバッチ構成をWindowsの純粋なcmd.exeと比較してどのように違いますか?Intellij stdin rederection

Javaアプリケーションを実行するためのバッチ設定を作成します。私はそれを実行すると、それはアイデアコンソールで私の結果sciptを表示します:

cmd.exe /c java -classpath C:\app;C:\app\libs.jar App < input.txt 

標準入力からこのアプリケーション待機入力。この行はそれを実行し、input.txtファイルから読み込む必要があります。しかし、それは入力を待って読むのinsted。アイデアコンソールで^ Dキーを押すと、入力がありませんでした。

私はこのアイデアコンソールからWindows cmdに直接起動スクリプトを貼り付けると、すべてが予想どおりに実行され、アプリケーションがファイルを読み込んで正しく終了します。

私はstackoverflowの答えを読んで、外部ツールのアイデアのオプションを試してみてください。私はそれを実行しようとします:

java -classpath C:\app;C:\app\libs.jar App < input.txt 

しかし、まだ入力を待っています。私は、引数としてファイル名を渡した場合だけでなく、Javaアプリケーションの実行構成としては、入力待ち:

"C:\Program Files\Java\jdk1.8.0_92\bin\java" 
-Didea.launcher.port=7533 
"-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IDEA\bin" 
-Dfile.encoding=UTF-8 
-classpath "long..long..classpath" 
com.intellij.rt.execution.application.AppMain Col < input.txt 

私は標準入力rederectionについてのいくつかのリンク(onetwothree)を見つけたと方法がないように思えますこれをコードからのアイデアのみから行うこと。 ありがとうございました!

+1

私が見つけた唯一の方法は、引数として渡すファイル名でなど主要なものの先頭に似追加: '(args.length> 1)System.setIn(new FileInputStream(args [1]));' –

+1

@ useruser272933 'System.setIn'については決して知りませんでした。あなたが答えとしてそれを書くことができれば、私は確かにそれをupvoteだろう。 –

+0

は答えとして書きました!) –

答えて

7

私が見つけた唯一の方法は、main関数に引数として渡すファイル名であり、このような行を追加します。

if(args.length > 1) 
    System.setIn(new FileInputStream(args[1]));