0

我正在尝试在 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 中的键盘输入?谢谢...

4

1 回答 1

0
  1. 当您尝试从没有(更多)字符要读取的流中读取时,将引发 NoSuchElementException。

  2. getConsole() 方法被定义为null在没有可用的交互式“控制台”时返回。

当您从 Raspberry Pi 上的“rc.local”脚本执行应用程序时,这(可能)发生在配置供您读取的控制台之前。这很可能是操作系统限制。(经典的 Linux 系统等也有类似的限制)

我需要做什么才能读取 rc.local 中的键盘输入?

我怀疑你需要做的是让你的“rc.local”脚本启动一个虚拟控制台并从中运行java应用程序。

于 2017-12-10T11:40:52.977 回答