Frame Buffer Image Viewer (FBI) Сбой при выполнении как процесс - Java - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь использовать утилиту Linux FBI, чтобы записать несколько изображений .jpg в кадровый буфер на Raspberry Pi 3 из Java.

Из командной строки все работает как положено. Мое Java-приложение работает нормально, пока я не попытаюсь запустить следующую строку кода (кстати, никаких ошибок Java):

Process p = Runtime.getRuntime().exec("sudo fbi -T 1 -d /dev/fb0 -a -noverbose -t 1 -cachemem 0 /home/pi/Desktop/*.jpg");

Черный экран загрузки для ФБР отображается, когда этот процесс выполняется, поэтому я знаю, что он выполняется правильно, но ФБР отвечает с ошибкой, указывающей /home/pi/Desktop/*.jpg Loading Failed. Я видел эту ошибку раньше, но только когда я ссылаюсь на папку или файл, который не существует. Изображения, которые я пытаюсь отобразить, находятся на рабочем столе. Я могу запустить ту же команду, которая находится в вызове exec из любого места в CLI, и она работает. Я не совсем уверен, почему это не работает из моего приложения Java.

Заранее спасибо

1 Ответ

0 голосов
/ 29 августа 2018

Простой: подстановочный знак "*" (или любой другой подстановочный знак) является функцией базовой оболочки . Поэтому он работает, когда вы используете его вручную в командной строке.

Но при использовании его через компоновщик процессов оболочка отсутствует. Таким образом, нет компонента, который превращает звездочку в список имен файлов. Таким образом, эта строка передается как имя файла, и, конечно, такого файла нет!

Вам либо нужно написать код Java, который расширяет подстановочный знак в коде (чтобы затем передать список имен файлов напрямую), либо вам нужно явно запустить оболочку явно (правильно это сделать, со всеми командами может быть довольно сложно) ,

...