【问题标题】:java Runtime exec process do not work properlyjava Runtime exec进程无法正常工作
【发布时间】:2014-03-17 09:50:25
【问题描述】:

当我从 Terminal(使用 Ubuntu Linux) 执行我在下面添加的命令时,命令会正确执行。但是当我尝试通过 Java 应用程序 执行 完全相同的命令 时它失败了,尽管没有错误或异常。

失败表示此命令会创建一个新文件夹并提取其中的 apk 文件内容。

要执行的命令:

java -jar ~/apktool1.5.2/apktool.jar d /home/talha/Desktop/myapk.apk /home/talha/Desktop/myapk

源代码:

Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();

【问题讨论】:

  • 你得到了什么异常?
  • @mig-25foxbat 我没有得到任何异常或错误..
  • 使用 getInputStream() 和 getErrorStream() 读取进程输出和错误流,打印出执行子进程的任何错误。

标签: java unix jar runtime runtime.exec


【解决方案1】:

试试这个代码:

    public static void main(String[] args) {    
    String[] cmd = { "/bin/sh", "-c", "java -jar ~/apktool1.5.2/apktool.jar d /home/talha/Desktop/myapk.apk /home/talha/Desktop/myapk" };
    BufferedReader bri = null, bre = null;
    int exitC = 0;
    try {
        Process p = Runtime.getRuntime().exec(cmd);
        exitC = p.waitFor();
        bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
        bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        String line = "";
        while ((line = bri.readLine()) != null) {
            System.out.println(line);               
        }
        while ((line = bre.readLine()) != null) {
            System.out.println(line);
        }
        bri.close();
        bre.close();
    } catch (Exception e) {
        e.printStackTrace();
    } 
    System.out.println("Exit Code: "+ exitC);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    相关资源
    最近更新 更多