gpt4 book ai didi

java - 对于 pulseaudio/pacmd/pactrl 命令,Intellij 终端的行为不同于 Ubuntu 终端

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:35 25 4
gpt4 key购买 nike

我正在尝试使用 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();
}

Both terminals

编辑:我的终端设置:

Intellij Terminal settings

Linux Terminal

最佳答案

问题出在 pulseaudio 上。对我有用的是打电话

export PULSE_RUNTIME_PATH=/run/user/1000/pulse

在运行任何 pulseaudio/pacmd/pacntl 命令之前。导出命令 doesn't seem to work from runtime .但是,您可以创建一个 shell 文件,然后执行您的命令:

测试.sh:

#!/bin/bash
export PULSE_RUNTIME_PATH=/run/user/1000/pulse
pacmd list-source-outputs

在 Java 中:

Runtime.getRuntime().exec("sh test.sh");

更容易处理动态调用:

测试.sh:

#!/bin/bash
export PULSE_RUNTIME_PATH=/run/user/1000/pulse
$1

在 Java 中:

Runtime.getRuntime().exec("sh test.sh \"pacmd list-source-outputs\"");

这是 Jetbrains 的官方回答:

How do you launch IDE: from terminal via .sh script or from desktop launcher? make sure to try to launch it from terminal via .sh script.

Also try restarting the IDE after starting the pulseaudio or restart the pulseaudio daemon in IDE terminal. Try also these suggestions: https://bbs.archlinux.org/viewtopic.php?pid=1214072#p1214072 https://bbs.archlinux.org/viewtopic.php?pid=1214157#p1214157

Note that after changing the environment it might be needed to restart the IDE.

关于java - 对于 pulseaudio/pacmd/pactrl 命令,Intellij 终端的行为不同于 Ubuntu 终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890173/

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