作为进程执行时帧缓冲区图像查看器 (FBI) 失败 - Java
Frame Buffer Image Viewer (FBI) Failing when Executed as Process - Java
我正在尝试使用 Linux FBI 实用程序将一些 .jpg 图像写入来自 Java 的 Raspberry Pi 3 上的帧缓冲区。
在命令行中,一切都按预期工作。我的 java 应用程序 运行 很好,直到我尝试 运行 以下代码行(顺便说一句,没有 Java 错误):
Process p = Runtime.getRuntime().exec("sudo fbi -T 1 -d /dev/fb0 -a -noverbose -t 1 -cachemem 0 /home/pi/Desktop/*.jpg");
FBI 的黑色加载屏幕在执行此过程时确实显示,所以我知道它正在正确执行,但 FBI 响应错误并指出 /home/pi/Desktop/*.jpg Loading Failed
。我以前见过这个错误,但只有在我引用不存在的文件夹或文件时才会出现。我要显示的图像在桌面上。我可以 运行 从 CLI 中的任何位置调用 exec
中的相同命令并且它有效。我不确定为什么它在我的 Java 应用程序中不起作用。
提前致谢
简单:“*”通配符(或任何其他通配符)是底层 shell 的一个特征。因此,当您在命令行上手动使用它时它会起作用。
但是通过进程构建器使用它时,没有shell。因此,没有将星号转换为文件名列表的组件。因此该字符串作为文件名传递,当然,没有这样的文件!
您要么必须编写 Java 代码来扩展代码中的通配符(然后直接传递文件名列表),要么您必须显式地实际启动一个 shell(做对了) ,所有命令可能都非常棘手)。
我正在尝试使用 Linux FBI 实用程序将一些 .jpg 图像写入来自 Java 的 Raspberry Pi 3 上的帧缓冲区。
在命令行中,一切都按预期工作。我的 java 应用程序 运行 很好,直到我尝试 运行 以下代码行(顺便说一句,没有 Java 错误):
Process p = Runtime.getRuntime().exec("sudo fbi -T 1 -d /dev/fb0 -a -noverbose -t 1 -cachemem 0 /home/pi/Desktop/*.jpg");
FBI 的黑色加载屏幕在执行此过程时确实显示,所以我知道它正在正确执行,但 FBI 响应错误并指出 /home/pi/Desktop/*.jpg Loading Failed
。我以前见过这个错误,但只有在我引用不存在的文件夹或文件时才会出现。我要显示的图像在桌面上。我可以 运行 从 CLI 中的任何位置调用 exec
中的相同命令并且它有效。我不确定为什么它在我的 Java 应用程序中不起作用。
提前致谢
简单:“*”通配符(或任何其他通配符)是底层 shell 的一个特征。因此,当您在命令行上手动使用它时它会起作用。
但是通过进程构建器使用它时,没有shell。因此,没有将星号转换为文件名列表的组件。因此该字符串作为文件名传递,当然,没有这样的文件!
您要么必须编写 Java 代码来扩展代码中的通配符(然后直接传递文件名列表),要么您必须显式地实际启动一个 shell(做对了) ,所有命令可能都非常棘手)。