gpt4 book ai didi

java - 使用 netbeans 在 Mac OSX 中运行时打开应用程序

转载 作者:行者123 更新时间:2023-12-02 03:48:07 25 4
gpt4 key购买 nike

我想在 Mac 中使用 netbeans 运行时打开一个应用程序,我使用了以下代码,但它抛出异常。我在 Windows 上使用了这段代码,在 Mac 上使用它时做了一些修改。任何人都可以建议我正确的代码。

else
{
try {

Runtime r = Runtime.getRuntime();

p = Runtime.getRuntime().exec("/Applications/TextEdit.app /Users/apple/Documents/java files/scratch files/hi.rtf");


A4 a4sObj = new A4(new String[]{jComboBox2.getSelectedItem().toString()});


} catch (IOException ex) {
Logger.getLogger(serialportselection.class.getName()).log(Level.SEVERE, null, ex);
}


}

最佳答案

好的,所以这需要一点挖掘。运行 .app 包的首选方法似乎是使用 open 命令。为了让应用程序打开文件,您必须使用 -a 参数,例如...

import java.io.IOException;
import java.io.InputStream;

public class Test {

public static void main(String[] args) {
String cmd = "/Applications/TextEdit.app";
//String cmd = "/Applications/Sublime Text 2.app";
String fileToEdit = "/Users/.../Documents/Test.txt";

System.out.println("Cmd = " + cmd);
ProcessBuilder pb = new ProcessBuilder("open", "-a", cmd, fileToEdit);
pb.redirectErrorStream(true);
try {
Process p = pb.start();
Thread t = new Thread(new InputStreamConsumer(p.getInputStream()));
t.start();
int exitCode = p.waitFor();
t.join();
System.out.println("Exited with " + exitCode);
} catch (IOException | InterruptedException ex) {
ex.printStackTrace();
}
}

public static class InputStreamConsumer implements Runnable {

private InputStream is;

public InputStreamConsumer(InputStream is) {
this.is = is;
}

@Override
public void run() {
int read = -1;
try {
while ((read = is.read()) != -1) {
System.out.print((char)read);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}

}

}

关于java - 使用 netbeans 在 Mac OSX 中运行时打开应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36147226/

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