Was ist ein Unterschied, wie Idee Batch-Konfiguration im Vergleich zu reinen cmd.exe in Windows ausführen?Intellij stdin rejection
Ich erstelle Batch-Konfiguration für meine Java-App ausführen. Wenn ich es ausführe, zeige es mir Ergebnis-Scipt in der Idea-Konsole:
cmd.exe /c java -classpath C:\app;C:\app\libs.jar App < input.txt
Diese App wartet Eingabe von Standard-Eingabe. Diese Zeile sollte es ausführen und aus der Datei input.txt lesen. Aber nicht lesen, warten auf Eingabe. Wenn ich^D in der Ideenkonsole drücke, druckt die App, dass keine Eingaben vorhanden sind.
In der gleichen Zeit, wenn ich dieses Startskript kopieren von Idea-Konsole direkt auf Windows Cmd kopieren, geschieht alles wie erwartet, App liest die Datei und korrekt fertig.
Ich habe stackoverflow Antworten gelesen und Vorschläge finden, um External Tool Idee Option zu versuchen. Ich versuche es als:
java -classpath C:\app;C:\app\libs.jar App < input.txt
Aber es immer noch auf Eingabe warten. Neben Java-Anwendung ausführen Konfiguration, wenn ich Dateinamen als Argument übergeben, es für die Eingabe warten:
"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
habe ich einige Links (one, two, three) über stdin rederection finden und es scheint, als gäbe es keine Möglichkeit gibt, um dies von der Idee nur aus dem Code zu tun. Vielen Dank!
Der einzige Weg, ich finde tat, sind Passdateinamen als Argument und fügen Sie wie zu Beginn des Haupt so etwas wie : 'if (args.length> 1) System.setIn (neuer FileInputStream (args [1]));' –
@ useruser272933 Niemals von 'System.setIn' gewusst. Wenn Sie das als Antwort schreiben können, würde ich es sicherlich aufwerten. –
habe es als Antwort geschrieben!) –