gpt4 book ai didi

java - 如何使用命令提示符在两个 jar 文件之间创建管道?

转载 作者:行者123 更新时间:2023-11-30 01:45:18 25 4
gpt4 key购买 nike

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

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

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

1.Execute: Adder.jar

5

7

2.Execute: Doubler.jar

4

3.Execute: Adder.jar | Doubler.jar (Pipe Adder's output into Doubler's input)

这正是我在控制台中输入的内容:

C:>java -jar "Adder.jar"

5

7

12

C:>java -jar "Doubler.jar"

4

8

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

Exception in thread "main" java.lang.NullPointerException at Adder.main(Adder.java:29)

Exception in thread "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 语句之前,控制台会打印出我编写的消息并终止。

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

最佳答案

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

尝试使用 Scanner和 System.out.println 代替。

关于java - 如何使用命令提示符在两个 jar 文件之间创建管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com