我正在尝试在Raspbian rc.local中运行一个java控制台应用程序。
这是一个启动菜单,用于根据键盘输入选择菜单项。 如果在命令提示符下运行,程序运行正常。
但是,在rc.local
中启动java控制台应用程序时java -jar /home/pi/RaspPiStartup/RaspPiStartup.jar
应用程序无法读取键盘输入。
Scanner in = new Scanner(System.in);
Console con=System.console();
AtomicInteger num=new AtomicInteger(-1);
Thread thread = new Thread() {
public void run() {
try {
int i1;
if (con==null) {
System.out.println("KeyScan In");
i1=in.nextInt();
System.out.println("KeyScan "+i1);
}
else {
System.out.println("KeyCon In");
i1=Integer.parseInt(con.readLine());
System.out.println("KeyCon "+i1);
}
num.set(i1 );
}
catch(Exception e) {
System.out.println("Fehler Keyboard In"+e.toString());
}
}
};
thread.start();
正如你所见,我尝试了几种方法。
这个解决方案给了我一个例外。
由于rc.local中的con == null,扫描程序会尝试读取。
从而导致java.util.NoSuchElementException。
在rc.local中读取键盘输入需要做什么? 感谢...
答案 0 :(得分:0)
当您尝试从没有(更多)字符要读取的流中读取时,抛出NoSuchElementException。
getConsole()方法被定义为在没有交互式"控制台"时返回null
。可用。
当您从" rc.local"执行应用程序时Raspberry Pi上的脚本,(可能)在之前发生,有一个配置供您阅读的控制台。这很可能是操作系统限制。 (在经典的Linux系统中存在类似的限制等)
在rc.local中读取键盘输入我需要做什么?
我怀疑你需要做的是拥有你的" rc.local"脚本启动虚拟控制台并从中运行java应用程序。