Как я могу создать конвейер между двумя файлами JAR с помощью командной строки? - PullRequest
1 голос
/ 07 октября 2019

В настоящее время я застрял, пытаясь запустить два jar-файла в конвейере с помощью командной строки в Windows 10.

=======================================================================

Это шаги, которые я набрал в консоли:

1. Выполнить: Adder.jar

5

7

2. Выполнить: Doubler.jar

4

3. Выполнить: Adder.jar |Doubler.jar (труба Adder вывод на вход Doubler)

, и это именно то, что я печатаю в консоли:

C:> java -jar "Adder.jar"

5

7

12

C:> java -jar" Doubler.jar "

4

8

C:> java -jar "Adder.jar" |java -jar "Doubler.jar"

Исключение в потоке "main" java.lang.NullPointerException в Adder.main (Adder.java:29)

Исключение в потоке "main" java. lang.NullPointerException at doubler.Doubler.main (Doubler.java:32)

C:>

Исключение нулевого указателя в строке 29 происходит из выражения класса Adder:

String sFirstNumber = con.readLine ();

А вот основной метод из класса Adder, из которого был создан файл jar:

public static void main(String[] args)
{
    Console con = System.console();

 //      if (null == con)
 //      {
 //          System.out.println("!! Error accessing console: Run in
 //                                     a command window !!");
 //          return;
 //      }

    // Input two numbers from the input stream
    String sFirstNumber = con.readLine();
    String sSecondNumber = con.readLine();  
    int iFirstNumber = Integer.parseInt(sFirstNumber);;
    int iSecondNumber = Integer.parseInt(sSecondNumber);;   

    // Add the numbers
    int iTotal = iFirstNumber + iSecondNumber;

    // Output the result onto the output stream
    con.printf("%d", iTotal);
 }

Когда я запускаю один JAR-файл за раз, все работает нормально. Пока я не попытаюсь соединить два файла JAR с "|"команда, что консоль выдает исключение.

Прежде чем я закомментировал оператор if, который проверял, была ли консоль нулевой, консоль распечатала написанное мной сообщение и прервала его.

Консоль, кажется, запускает файл jar на виртуальной машине Java или что-то, когда я использую "|"команда. Почему иначе System.console () будет нулевым, когда я использую "|"команда с двумя файлами JAR и не быть нулевым, когда я запускаю один файл JAR за раз?

1 Ответ

2 голосов
/ 07 октября 2019

"|"Команда изменяет стандартный ввод вашей программы. Внутри вашего Double.jar стандартным вводом будет стандартный вывод Adder.jar, который не является консолью;вот почему System.console () имеет значение null.

Просто попробуйте вместо этого использовать Scanner и System.out.println.

...