【发布时间】: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