java - 使用java从e​​clipse运行Mac OSX命令

标签 java macos command-line execute

我正在尝试制作一个简单的 java 程序,以使用终端命令取消隐藏 osx 上的 ~\Library\文件夹。据我研究,从 java 运行系统命令的代码是 Runtime.getRuntime().exec(); 并且在我查找的每个地方都如此列出。

但是,我的程序不起作用。主要方法如下。

public static void main(String[] args) throws IOException {

    String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"};
    try {
        Runtime.getRuntime().exec(noHide);
        System.out.println("library unhidden");
    } catch (Exception e ) {
        e.printStackTrace();
    }
}

这个程序没有抛出异常,编译和执行都很好,但是 Library 文件夹不会取消隐藏。不管我重新格式化 cmd 字符串。以下格式均无效

String noHide = "chflags nohidden ~/Library";
String[] noHide = {"chflags", "nohidden","~/Library"};
String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"};

如果我删除空格,它们会抛出异常(嗯,不是 String 数组对象)。我可以从 osx 终端运行命令 (chflags noHidden ~/Library) 绝对没问题。有人知道为什么吗?

最佳答案

您需要使用您拥有的trycatch。但是,您的 main 应该是这样的:

public static void main(String[] args) {
    String[] noHide = {"chflags", "nohidden","~/Library"};
    try {
        Runtime.getRuntime().exec(noHide);
    } 
    catch (Exception e) {
        }
    }

基本上,您不需要throws IOException。这对我有用,所以如果它在您的程序中仍然不起作用,则您设置某些东西的方式可能存在更大的问题。

关于java - 使用java从e​​clipse运行Mac OSX命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939429/

相关文章:

尽管编译,Xcode 在编辑时显示快速错误

java - 什么取代了 RxJava2 中的 Notification.Kind

java - "<"或 ">"运算符如何溢出?

java.lang.IllegalStateException : Encountered invalid @Scheduled method 'execute' : For input string: "1#1"

swift - 如何将 NSURL 与相对路径一起使用?

c# - WPF 控制台应用程序在完成后不会返回提示

linux - 命令行日志文件中时间的分箱直方图

java - ASM : how to easily get proper Opcode based on type

java - 如何使用 Java 检索 Mac OS 设置?

python - Pypyodbc: Can't open lib 'FreeTDS': file not found") 尝试连接 SQL Server 时出错