gpt4 book ai didi

java - 通过 ProcessBuilder 的 Shell 命令无法在 MacOS 上执行任何操作,但退出代码 == 0 并且没有错误

转载 作者:行者123 更新时间:2023-11-30 02:03:27 33 4
gpt4 key购买 nike

所以我很长一段时间以来一直在尝试寻找这个问题的解决方案,但甚至无法收到错误消息。我正在尝试使用以下命令在 MacOS 上切换暗模式:/usr/local/bin/dark-mode on

如果我使用标准终端执行它,它就可以工作,但是执行下面的代码不会执行任何操作。日志文件为空。为了确保我的代码正确,我使用了不同的命令(已注释掉),这个命令为我提供了 whoami 的正确输出并返回了我当前的用户。

我认为这可能与 MacOS 上的应用程序安全性有关?我不知道从哪里开始。

private void switchDark() {
try {
//Activate the dark mode on MacOS
String command = new String[] { "/usr/local/bin/dark-mode", "on" };
//String command = new String[] { "whoami" }; //This works and gives me the current user

ProcessBuilder pb =
new ProcessBuilder(command[0], command[1]);
File log = new File("LOG.txt");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process proc = pb.start();

proc.waitFor();

if(proc.exitValue() != 0) {
throw new IllegalThreadStateException();
}
} catch (IOException | InterruptedException | IllegalThreadStateException ex) {
System.out.println("Setting dark mode failed!");
if(debug)System.out.println(ex.getMessage());
}
}

最佳答案

我查看了代码以了解“暗模式”命令的作用。 (https://github.com/sindresorhus/dark-mode - 感谢@MadProgrammer)

我不是 Swift 或 MacOS 专家,但该命令的实现看起来不像是测试 AppleScript 命令是否成功。此外,似乎没有任何东西可以在发生故障时设置非零退出状态。

所以我的结论是,底层 AppleScript 命令不起作用……原因未报告……并且信息不会通过退出状态传回 Java。在 Java 级别您对此无能为力。

我的猜测是,“深色模式”请求实际上因权限相关原因而失败。

关于java - 通过 ProcessBuilder 的 Shell 命令无法在 MacOS 上执行任何操作,但退出代码 == 0 并且没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52022247/

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