【问题标题】:Frame Buffer Image Viewer (FBI) Failing when Executed as Process - Java帧缓冲区图像查看器 (FBI) 在作为进程执行时失败 - Java
【发布时间】:2019-02-03 18:04:28
【问题描述】:

我正在尝试使用 Linux FBI 实用程序从 Java 将一些 .jpg 图像写入 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 应用程序中运行。

提前致谢

【问题讨论】:

  • 我很欣赏这次回归 ;-) 有什么我可以补充的,也让答案值得投票吗?

标签: java raspberry-pi raspberry-pi3


【解决方案1】:

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

但是当通过进程构建器使用它时,没有外壳。因此,没有将星号转换为文件名列表的组件。因此,该字符串作为文件名传递,当然,没有这样的文件!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 2013-11-07
    • 1970-01-01
    相关资源
    最近更新 更多