Runtime.getRuntime()。exec(" java -jar xxx.jar);不工作| Mac OS X

时间:2016-03-21 22:11:39

标签: java macos opencv runtime

我的问题是,我无法在Java程序中打开jar。我想打开的.jar中有一个OpenCV库。如果我双击.jar,那么它工作正常。如果我在Mac OS X终端中输入它,它也可以正常工作。

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource() instanceof JButton){
        JButton button = (JButton) e.getSource();
        if(button.getText().equals("Aktivieren")){

            System.out.println("Yaay");
                String str;

                if(Main.os.contains("Mac")){
                    str = "java -jar "+System.getProperty("user.home") + "/Library/Application\\ Support/MW"+"/System/Core.jar";
                    System.out.println(str);
                } else {
                    str = "java -jar "+Main.directory+"/MW/System/Core.jar";
                }

                System.out.println(str);

                try {
                    Runtime.getRuntime().exec(str);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

        }
    }
}

所以Sysout的输出是: java -jar / Users / Tech / Library / Application \ Support / MW / System / Core.jar

当我手动将其粘贴到终端时,它可以正常工作。

我没有收到错误消息。

抱歉我的英语不好,我是德国人。

谢谢(或其他)Tech

1 个答案:

答案 0 :(得分:0)

你能尝试这样做吗?

if(Main.os.contains("Mac")){
    String jar = "System.getProperty("user.home") + "/Library/Application\\ Support/MW"+"/System/Core.jar";
    str = "java -classpath " + jar + " -jar "+System.getProperty("user.home") + "/Library/Application\\ Support/MW"+"/System/Core.jar";
    System.out.println(str);
} else {
    String jar = "Main.directory+"/MW/System/Core.jar";
    str = "java  -classpath " + jar + " -jar "+Main.directory+"/MW/System/Core.jar";
}

一般情况下,我很乐意使用ProcessBuilder,但这不会解决您的问题:)