我正在尝试使用Java中的ProcessBuilder
运行一些pulseaudio操作,例如在Ubuntu 18.04上的pacmd list-source-outputs
。当我直接从Intellij运行代码时,它说No PulseAudio daemon running, or not running as session daemon.
但是,如果我去build / classes / java / main并执行java MyMainClass
,它将按预期工作。
我认为这与Intellij终端的集成方式有关。它的行为似乎与OS终端不同(请参见图片)。是否有人对Intellij终端有更多见解?
Process p = null;
try {
p = new ProcessBuilder("pacmd", "list-source-outputs").start();
printStream(p.getInputStream());
printStream(p.getErrorStream());
p.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
编辑:我的终端设置:
最佳答案
问题出在pulseaudio。对我有用的是打电话给
export PULSE_RUNTIME_PATH=/run/user/1000/pulse
在运行任何pulseaudio / pacmd / pacntl命令之前。导出命令doesn't seem to work from runtime。但是,您可以创建一个Shell文件,然后执行命令:
test.sh:
#!/bin/bash
export PULSE_RUNTIME_PATH=/run/user/1000/pulse
pacmd list-source-outputs
在Java中:
Runtime.getRuntime().exec("sh test.sh");
动态调用更容易处理:
test.sh:
#!/bin/bash
export PULSE_RUNTIME_PATH=/run/user/1000/pulse
$1
在Java中:
Runtime.getRuntime().exec("sh test.sh \"pacmd list-source-outputs\"");
这是Jetbrains的官方回答:
如何启动IDE:从终端通过.sh脚本还是从桌面启动
发射器?确保尝试通过.sh脚本从终端启动它。
也可以在启动pulseaudio后尝试重新启动IDE或重新启动
IDE终端中的pulseaudio守护程序。也尝试以下建议:
https://bbs.archlinux.org/viewtopic.php?pid=1214072#p1214072
https://bbs.archlinux.org/viewtopic.php?pid=1214157#p1214157
请注意,更改环境后,可能需要重新启动
IDE。