2017-12-10 3 views
0

Raspbian rc.local에서 Java 콘솔 앱을 실행하려고합니다.rc.local의 Java 콘솔 앱에서 키보드 문제

키보드 입력을 기반으로 메뉴 항목을 선택하는 부팅 메뉴입니다. 명령 프롬프트에서 실행중인 경우 프로그램이 올바르게 실행됩니다.

그러나, rc.local에

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
  1. 당신이 읽을 수 있도록 더 (더) 문자가없는 스트림에서 읽을하려고 할 때 예외 : NoSuchElementException이 발생합니다.

  2. 사용할 수있는 대화 형 "console"이없는 경우 getConsole() 메서드가 null을 반환하도록 정의됩니다.

당신은 라즈베리 파이에 "rc.local에"스크립트에서 응용 프로그램을 실행, 즉이 (아마도) 당신이 읽을 수 있도록 구성된 콘솔이 전에 발생합니다. 이것이 OS 제한 일 가능성이 큽니다. (고전 리눅스 시스템에서도 비슷한 제한이 있습니다.)

rc.local에서 키보드 입력을 읽으려면 어떻게해야합니까?

내가해야 할 일은 "rc.local"스크립트가 가상 콘솔을 시작하고 그로부터 Java 응용 프로그램을 실행하는 것입니다.