0

apktoolJava プログラムからを使用しようとしています。これを使用してWebサービスを作成しています。ただし、このコマンドは Java プログラムからシェルで実行されません。

String cmd = "apktool d /home/ridhima/Test.apk" ;
try {
    Process p = Runtime.getRuntime().exec(cmd);
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = "";
    while((line = reader.readLine()) != null)
     {
       System.out.print(line + "\n");
     }
    p.waitFor(); 
}
catch (IOException | InterruptedException e1) {
        e1.printStackTrace();
}

コマンドは、シェルから直接完全に正常に機能します。

4

2 に答える 2

0

プロセスが完了するまで待つ必要があるかもしれません

String cmd = "apktool d /home/ridhima/Test.apk" ;
try {
    Process p = Runtime.getRuntime().exec(cmd);
    // You maybe should wait for the process to complete
    p.waitFor(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = "";
    while((line = reader.readLine()) != null)
     {
       System.out.print(line + "\n");
     }

}
catch (IOException | InterruptedException e1) {
        e1.printStackTrace();
}

または、同じタスクにProcessBuilderを使用できます

public class Main {
    public static void main(String[] args) throws java.io.IOException, java.lang.InterruptedException {
        // Create ProcessBuilder instance for UNIX command ls -l
        java.lang.ProcessBuilder processBuilder = new java.lang.ProcessBuilder("ls", "-l");
        // Create an environment (shell variables)
        java.util.Map env = processBuilder.environment();
        env.clear();
        env.put("COLUMNS", "3");
        processBuilder.directory(new java.io.File("/Users"));
        java.lang.Process p = processBuilder.start();
    }
}
于 2015-03-25T07:49:05.307 に答える