无法通过进程运行rar.exe

时间:2014-02-06 09:41:07

标签: java command-line

我试图从我的Java应用程序中解压缩rar文件。

我已经找到了很多关于如何在Windows上执行适用于dir等内容的命令的解决方案。但它似乎不适用于gccrar等任何其他应用程序。我知道它们都有效,因为当我在cmd中执行它们时,它们会给我正确的输出。

但是,我想打印他们在cmd中吐出的输出。我只是不明白为什么它适用于dir而不是其他任何东西(没有"原生"命令)。

exitVal似乎总是为0 ..

    try {
        Runtime rt = Runtime.getRuntime();

        Process pr = rt.exec("cmd /c rar.exe"); //Does not work

        //Process pr = rt.exec("cmd /c dir") // This works
        //Process pr = rt.exec("gcc.exe");

        BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));

        String line=null;

        while((line=input.readLine()) != null) {
            System.out.println(line);
        }

        int exitVal = pr.waitFor();
        System.out.println("Exited with error code "+exitVal);
    }catch(IOException e)
    {
        System.out.println("An error occured. Are you sure the executable is in your Windows PATH?");
    }
    catch(Exception e) {
        System.out.println(e.me);
        e.printStackTrace();
    }
     catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
    }

2 个答案:

答案 0 :(得分:1)

你可以试试下面的内容吗

Process p = Runtime.getRuntime().exec(new String[]{"c:\\some_path\\UnRAR.exe", "e","c:\\some_another_path\\Archive.rar"}); 

或者您可以使用以下库

https://github.com/edmund-wagner/junrar

答案 1 :(得分:1)

你不能马上在cmd上运行rar.exe。它会给 ' RAR.EXE'不被识别为内部或外部命令,可操作程序或批处理文件。

您可以在环境变量

中指定路径或添加Rar的路径