【发布时间】:2021-07-18 18:54:51
【问题描述】:
我的主要问题是如何使下面提到的命令在 java 中工作,这个命令的主要问题是它不执行我命令它执行的脚本;有人可以帮我让这个苹果脚本在 java 中工作吗?
我不明白,但由于某种原因命令:
osascript -e 'tell application "Terminal" to do script "cd /Users/benjaminsloutsky/eclipse-workspace/stack/Stack/StackProjects/Brother/build && cmake .. && cmake --build . && ./cmake-good"'
在终端中执行,但是每当我尝试使用 Runtime.getRuntime().exec() 命令在 java 中运行它时,它根本不会执行(它不会向我显示一个正在执行代码的新终端窗口,但是在终端工作)。这个命令的重点是显示一个带有 main.cpp 文件输出的新终端。这是我的java代码:
final String innerCommand =
"cd /Users/benjaminsloutsky/eclipse-workspace/stack/Stack/StackProjects/Brother/build && cmake .. && cmake --build . && ./cmake-good";
String[] comm = new String[] {
"/bin/bash", "-c",
"osascript -e 'tell application \"Terminal\" to do script \"" +
innerCommand + "\"'"
};
Runtime.getRuntime().exec(comm);
它没有运行。为什么会这样,我该如何解决这个问题,以便我的脚本也可以在 javafx 中运行。该命令的目的是显示一个新的终端窗口,然后运行一个脚本。
我认为我正在正确运行 comm 变量中列出的多个命令,并且我正在使用运行时执行命令。
提前谢谢你!
【问题讨论】:
-
在您的 Java 代码中将
"\"'"更改为"\""。'不应该在那里。 -
啊。好的,我现在明白了。但我必须修复你过长的 Java 行以明确发生了什么。
-
终端窗口是否在当前窗口后面打开;见apple.stackexchange.com/questions/205143
-
试着让它只是打开一个终端并回显一些东西。
-
你想错了。重新发布问题是一个主要的禁忌。转发被这里的人解释为“寻求关注的行为”。您很可能会发现该转贴被大量否决,然后被关闭。引起对 StackOverflow 问题的关注的(唯一)合法方式是发布奖励。
标签: java javafx terminal applescript runtime