帧缓冲区图像查看器(FBI)作为进程执行时失败-Java

帧缓冲区图像查看器(FBI)作为进程执行时失败-Java,java,raspberry-pi,raspberry-pi3,Java,Raspberry Pi,Raspberry Pi3,我试图使用LinuxFBI实用程序在Java的RaspberryPi3上向帧缓冲区写入一些.jpg图像 从命令行中,一切都按预期工作。我的java应用程序运行良好,直到我尝试运行以下代码行(顺便说一下,没有java错误): FBI的黑色加载屏幕在执行此过程时会显示,因此我知道它正在正确执行,但FBI的响应错误为/home/pi/Desktop/*。jpg加载失败。我以前见过这个错误,但只有在引用不存在的文件夹或文件时才出现。我试图显示的图像在桌面上。我可以从CLI中的任何位置运行调用exec中的

我试图使用LinuxFBI实用程序在Java的RaspberryPi3上向帧缓冲区写入一些.jpg图像

从命令行中,一切都按预期工作。我的java应用程序运行良好,直到我尝试运行以下代码行(顺便说一下,没有java错误):

FBI的黑色加载屏幕在执行此过程时会显示,因此我知道它正在正确执行,但FBI的响应错误为
/home/pi/Desktop/*。jpg加载失败
。我以前见过这个错误,但只有在引用不存在的文件夹或文件时才出现。我试图显示的图像在桌面上。我可以从CLI中的任何位置运行调用
exec
中的同一命令,该命令可以正常工作。我不太清楚为什么它不能在我的Java应用程序中工作

提前感谢

很简单:“*”通配符(或任何其他通配符)是底层shell的一个功能。因此,当您在命令行上手动使用它时,它会工作

但是当通过process builder使用它时,没有shell。因此,没有任何组件可以将星号转换为文件名列表。因此,该字符串作为文件名传递,当然,没有这样的文件

您要么必须编写Java代码来扩展代码中的通配符(然后直接传递一个文件名列表),要么必须实际显式地启动一个shell(正确地使用所有命令可能非常棘手)

我很欣赏他的复出;-)有什么我可以补充的,也使答案值得投票吗?
Process p = Runtime.getRuntime().exec("sudo fbi -T 1 -d /dev/fb0 -a -noverbose -t 1 -cachemem 0 /home/pi/Desktop/*.jpg");