如何通过命令提示符在两个jar文件之间创建管道?

问题描述 投票:1回答:1

我目前在尝试使用Windows 10中的命令行。

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

这些是我在控制台中键入的步骤:

1.Execute:Adder.jar

5

7

2.Execute:Doubler.jar

4

3.Execute:Adder.jar | Doubler.jar(管道加法器的输出到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”

线程“主”中的异常java.lang.NullPointerException在Adder.main(Adder.java:29)

线程“主”中的异常java.lang.NullPointerException在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文件命令那个控制台将引发异常。

[在注释掉检查控制台是否为null的if语句之前,控制台将打印出我编写的消息并终止。

[当我使用“ |”时,控制台似乎在java虚拟机上运行jar文件。命令。为什么当我使用“ |”时System.console()会为null命令包含两个jar文件,并且一次运行一个jar文件时不为null?

java windows command-line jar pipe
1个回答
2
投票

[命令更改程序的标准输入。在Double.jar中,标准输入将是Adder.jar的标准输出,而不是控制台。这就是为什么System.console()为null的原因。

© www.soinside.com 2019 - 2024. All rights reserved.