2017-01-12 1 views
0

Ich habe einen Code, der einige Adb-Befehle und liest die Eingabe, um später in JTextField widergespiegelt werden. Es funktioniert gut in Windows, aber in Linux, gibt der gleiche Code eine Reihe von Fehlern wie IOexception (keine solche Datei oder Verzeichnis). Haben wir OS-spezifische Umgebungskonfiguration in diesem FallAusführen von Shell-Befehlen mit ProcessBuilder in Linux

ProcessBuilder process5 = new ProcessBuilder("adb", "shell","getprop","ro.product.model"); 
Process p1 = process5.start(); 
InputStream stdin1 = p1.getInputStream(); 
BufferedReader writer1 = new BufferedReader(new InputStreamReader(stdin1));   
String model=writer1.readLine(); 

Fehler mgs-

Exception in thread "main" java.io.IOException: Cannot run program "adb": error=2, No such file or directory 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) 
at pb.main(pb.java:24) 
Caused by: java.io.IOException: error=2, No such file or directory 
at java.lang.UNIXProcess.forkAndExec(Native Method) 
at java.lang.UNIXProcess.<init>(UNIXProcess.java:248) 
at java.lang.ProcessImpl.start(ProcessImpl.java:134) 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 
... 1 more 
+0

Ist das Verzeichnis von 'adb' in Ihrer' PATH' Variable? z.B. 'export PATH = ...' – SubOptimal

+1

Es würde vielleicht helfen, wenn Sie die genaue Fehlermeldung einfügen würden. Aber könnte es sein, dass auf Ihrem Linux-System die ausführbare Datei "adb" nicht in Ihrem 'PATH' enthalten ist? Wenn ja, sag es mir, dann mache ich das eine Antwort, um von dir akzeptiert zu werden. Um es zu versuchen, öffne einfach ein Terminal und versuche, 'adb' auszuführen. Wenn dies nicht der Fall ist, fügen Sie den Pfad zu "adb" zu Ihrem Pfad hinzu oder erstellen Sie einen Symlink zu "adb" irgendwo in Ihrem "PATH" wie mit "ln -s/pfad/zu/adb/usr/local/bin /". – Vampire

+0

@ SubOptimal- Nein. Muss ich das manuell machen? – sam

Antwort

0

Können Sie adb aufrufen mit absoluten Pfad angeben müssen? Sie können den absoluten Pfad mit whereis adb finden. Sie können auch überprüfen, was echo $PATH von JAVA Process Builder zurückgibt, um den gleichen Pfad wie Java-Programm zu erhalten.

Verwandte Themen