rc.local

时间:2017-12-10 11:16:04

标签: java console keyboard debian-jessie

我正在尝试在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中读取键盘输入需要做什么? 感谢...

1 个答案:

答案 0 :(得分:0)

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

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

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

      

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

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