gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:01:59 24 4
gpt4 key购买 nike

我正在尝试使用 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 加载失败 。我以前见过此错误,但只有当我引用不存在的文件夹或文件时才会出现此错误。我尝试显示的图像位于桌面上。我可以从 CLI 中的任何位置运行调用 exec 中的相同命令,并且它可以工作。我不太确定为什么它在我的 Java 应用程序中不起作用。

提前致谢

最佳答案

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

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

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

关于java - 作为进程执行时帧缓冲区图像查看器 (FBI) 失败 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com