【问题标题】:How can I create a pipeline between two jar files with the command prompt?如何使用命令提示符在两个 jar 文件之间创建管道?
【发布时间】:2019-10-06 21:13:20
【问题描述】:

我目前正试图使用​​管道在管道上运行两个 jar 文件 Windows 10 中的命令行。

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

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

1.执行:Adder.jar

5

7

2.执行:Doubler.jar

4

3.执行:Adder.jar | Doubler.jar (Pipe 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 在 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 语句之前,控制台会打印出我写的消息并终止。

当我使用“|”时,控制台似乎在 java 虚拟机或其他东西上运行 jar 文件命令。为什么当我使用“|”时 System.console() 会为空一次运行一个 jar 文件时带有两个 jar 文件且不为空的命令?

【问题讨论】:

    标签: java windows command-line jar pipe


    【解决方案1】:

    “|”命令更改程序的标准输入。 在您的 Double.jar 中,标准输入将是 Adder.jar 的标准输出,它不是控制台;这就是 System.console() 为空的原因。

    尝试改用Scanner 和 System.out.println。

    【讨论】:

    • 但是 Adder 类不是也抛出异常吗?如果 Doubler 类的输入是 Adder 类的输出,为什么 Adder 类的输入不是来自控制台的输入?
    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 2013-01-27
    • 1970-01-01
    • 2014-08-31
    • 2015-08-25
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多