码迷,mamicode.com
首页 > 其他好文 > 详细

ProcessBuilder异常CreateProcess error=2, ??Õ?»µ½?¶

时间:2015-04-27 09:45:33      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:createprocess   processbuilder   aapt   

后面那堆乱码使我知道只好用谷歌去查一下问题答案,翻着翻着就有了启发。


首先自己在捣鼓如何获取APK信息,然后了解了一下ProcessBuilder类,具体这个类如何获取APK信息,我另外写了一篇分析这个类的文章:


public class TestProcess {
	public static void main(String[] args) {
		ProcessBuilder pb = new ProcessBuilder();
		pb.redirectErrorStream(true);
		try {
			Process p = pb.command("C:/getapkinfo/aapt.exe d badging D:/new/test.apk").start();
			BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(),"UTF-8"));
			String s = "";
			while((s=br.readLine())!= null){
				System.out.println(s);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

执行这段代码的时候,就报了
 java.io.IOException: Cannot run program "C:/getapkinfo/aapt.exe d": CreateProcess error=2, ?????μ???

的错误。


但是直接在Dos窗口是可以执行的。

技术分享


将代码改为,

Process p = pb.command("ipconfig").start();

是正常执行的。后面搜到的一大堆答案全部都是什么路径问题。不,都是错误的解决方法。


ProcessBuider的API写到It is not checked whether command corresponds to a valid operating system command。就是非系统指令并不会提示。


然后受到网上一个答案的启发和源码的启发,我尝试将代码改为:

Process p = pb.command("C:/getapkinfo/aapt.exe d","badging","D:/new/test.apk").start();

是的,这样就正常执行了。


为什么呢?

似乎指令之间如果有空格而不用不同的字符串隔开,就会无法识别指令。

Process p = pb.command("C:/getapkinfo/aapt.exe"," ","d","badging","D:/new/test.apk").start();
这样是正常执行的,但是,这样执行后的结果等价于在Dos窗口输入:C:/getapkinfo/aapt.exe罢了。


然后,本来ipconfig /all是可以输出ip地址的详细信息的。

但是改为:

Process p = pb.command("ipconfig //all").start();

也是报相同的错误,到这里大家就知道了错误出在哪里了。


指令中有空格的需要用不同的字符串分开。

在重新读一下该方法的API。

public ProcessBuilder command(String... command)

command - a string array containing the program and its arguments

可见指令与参数是要放在不同的字符串数组里面的,所以下面才会正常执行:

Process p = pb.command("C:/getapkinfo/aapt.exe"," ","d","badging","D:/new/test.apk").start();

ProcessBuilder异常CreateProcess error=2, ??Õ?»µ½?¶

标签:createprocess   processbuilder   aapt   

原文地址:http://blog.csdn.net/iaiti/article/details/45268991

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!