Objective c 将Java转换为Obj C

Objective c 将Java转换为Obj C,objective-c,macos,Objective C,Macos,请帮助我找出哪个函数用于在objective c中运行terminal命令,正如我在下面的代码中在java中使用的那样。我只想知道在objc或cocoa中使用哪个函数来执行终端进程 Runtime rt = Runtime.getRuntime(); Process prcComile = rt.exec("javac -d F:/ F://" + fname.getText()+ ".java"); InputStream iscmp = prcComile.g

请帮助我找出哪个函数用于在objective c中运行terminal命令,正如我在下面的代码中在java中使用的那样。我只想知道在objc或cocoa中使用哪个函数来执行终端进程

Runtime rt = Runtime.getRuntime();
        Process prcComile = rt.exec("javac -d F:/ F://" + fname.getText()+ ".java");
        InputStream iscmp = prcComile.getErrorStream();
        int cerrInt = iscmp.read();
        if (cerrInt == -1) {
            Process prc = rt.exec("java -cp  F:/ " +fname.getText());
            InputStream iserr = prc.getErrorStream();
            int errInt = iserr.read();
            if (errInt == -1) {
                InputStream is = prc.getInputStream();
                int readInt = is.read();

                String allOutput = "";
                while (readInt != -1) {
                    char ch = (char) readInt;
                    allOutput = allOutput + ch;
                    readInt = is.read();
                }

                txtOutput.setText(allOutput);
            } else {
                String errorString = "";
                while (errInt != -1) {
                    char ch = (char) errInt;
                    errorString += ch;
                    errInt = iserr.read();
                }
                txtOutput.setText(errorString);
            }
        } else {
            String errorString = "";
            while (cerrInt != -1) {
                char ch = (char) cerrInt;
                errorString += ch;
                cerrInt = iscmp.read();
            }
            txtOutput.setText(errorString);
        }

您可以使用NSTask。应将java版本打印为标准输出(未读)的示例(未测试):


主类是
NSTask
删除
[java]
,因为答案与java无关。
- (IBAction)speak:(id)sender
{
    NSTask *task = [[NSTask alloc] init];
    task.launchPath = @"java";
    task.arguments  = @[@"-v"];
    [task launch];
    [task waitUntilExit];
    //use task.standardOutput to read
}