我目前在尝试使用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?
[命令更改程序的标准输入。在Double.jar中,标准输入将是Adder.jar的标准输出,而不是控制台。这就是为什么System.console()为null的原因。