Я разрабатываю приложение с Netbeans и Maven. Мое приложение должно получать данные из stdin. Но я не мог понять, как это проверить. Ввод < data.txt
в список args не работает.
Мне нужно то же самое, что:
$ java MyProgram < data.txt
Я разрабатываю приложение с Netbeans и Maven. Мое приложение должно получать данные из stdin. Но я не мог понять, как это проверить. Ввод < data.txt
в список args не работает.
Мне нужно то же самое, что:
$ java MyProgram < data.txt
Это можно сделать, добавив свою собственную цель запуска в файл проекта build.xml. Например:
<target name="run" depends="jar">
<exec dir="${work.dir}" executable="java" input="${work.dir}/inputfile.txt">
<arg value="-jar"/>
<arg file="${dist.jar}"/>
</exec>
</target>
Обратите внимание, что такие команды, как Run, Debug и Test, используют ваш собственный файл build.xml, если функция Compile on Save отключена для проекта. Поэтому вам нужно будет убедиться, что Compile on Save отключен в ваших свойствах проекта.
Я предполагаю, что у вас есть такая вещь:
public static void main(String[] args) {
...
}
Это может использоваться как точка входа в ваше приложение, и до этого вы меняете входной канал с помощью:
FileInputStream is = new FileInputStream(new File("test.data"));
System.setIn(is);
Вышеприведенное может быть использовано в тесте unit/integration.
Я не уверен, как это происходит в NetBeans, но в eclipse вы можете написать что-то на консоль, и он перенаправляется как STDIN для запуска приложения. Я считаю, что то же самое должно работать и в NetBeans. Итак, просто запустите приложение, затем скопируйте/вставьте содержимое data.txt
в консоль и, возможно, нажмите <ENTER>
.
Если ничего не помогает использовать удаленную отладку, то есть запустите свою программу из командной строки следующим образом:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y MyProgram < data.txt
затем подключитесь к этому процессу из NetBeans.
Старая школа, но это то, что я знал. Одно из предостережений заключается в том, что команда mvn не возвращается в cli, когда это делается, но для некоторых целей это приемлемо. Обратите внимание, что вы должны находиться в корневом каталоге проекта
mvn "-Dexec.args = -classpath% classpath com.mycompany.test" -Dexec.executable =/Downloads/jdk1.7/bin/java exec-maven-plugin: 1.2.1: exec </TMP/вход
Добавьте новый целевой "run-input" в разделе Files- > build.xml со следующим текстом. Примечание. В этой версии используется правильное расположение среды java. Кроме того, предполагается, что вы создали каталог с входами с файлом input1.
<target name="run-input" depends="jar">
<exec dir="${work.dir}" executable="${java.home}/bin/java" input="${src.dir}/inputs/input1">
<arg value="-jar"/>
<arg file="${dist.jar}"/>
</exec>
</target>
Вы всегда можете создать ярлык для этой новой цели.