【问题标题】:Running Mac OSX commands from eclipse using java使用 java 从 eclipse 运行 Mac OSX 命令
【发布时间】:2012-08-09 23:38:16
【问题描述】:

我正在尝试制作一个简单的 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();
    }
}

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

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

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

【问题讨论】:

    标签: java macos command-line execute


    【解决方案1】:

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

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

    基本上,您不需要throws IOException。这对我有用,所以如果它仍然无法在您的程序中运行,那么您的设置方式可能存在更大的问题。

    【讨论】:

      猜你喜欢
      • 2016-04-24
      • 2015-11-14
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 2018-04-08
      • 2011-06-11
      • 2015-04-09
      • 1970-01-01
      相关资源
      最近更新 更多