ProcessBuilder异常CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
来源:互联网 发布:冰血暴 结局 知乎 编辑:程序博客网 时间:2024/04/26 10:18
后面那堆乱码使我知道只好用谷歌去查一下问题答案,翻着翻着就有了启发。
首先自己在捣鼓如何获取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();
0 0
- ProcessBuilder异常CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
- windows下调用系统命令 CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
- SVN 问题Cannot load supported formats: Cannot run program "svn": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
- Cannot run program "svn" (in directory "F:\Android Stadio\xzsj"): CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
- Java使用ProcessBuilder创建子进程出现错误:CreateProcess error=87
- IDEA CreateProcess error=2
- 神秘异常,离奇原因——Flex项目中的CreateProcess: ***** error=2
- 【hadoop错误】Cannot run program "chmod": CreateProcess error=2 异常
- CreateProcess error=87
- CreateProcess failure, error 2
- 第一个slice2java的项目运行异常:Cannot run program "slice2java": CreateProcess error=2;解决方案诧异
- hadoop 在windows的Eclipse下运行出现Cannot run program "chmod": CreateProcess error=2 异常
- hadoop 在windows的Eclipse下运行出现Cannot run program "chmod": CreateProcess error=2 异常
- ant build.xml自动打包CreateProcess error=2, ?????????
- cannot run program "git.exe":CreateProcess error=2
- SDK升级后,AAPT报错:CreateProcess error=2
- cannot run program "git.exe":CreateProcess error=2
- idea分享代码到svn失败 CreateProcess error=2
- 自学php之YAF!什么是YAF?
- CSS实现半透明div层的方法
- 快速排序程序代码
- Android支持横行滚动的ListView控件
- IBM Notes常见问题及解决办法
- ProcessBuilder异常CreateProcess error=2, ϵͳÕҲ»µ½ָ¶
- LeetCode-19 Remove Nth Node From End of List(移除尾部第N个节点)
- jQuery 选择器
- MYECLIPSE7.5和8.5中安装SVN实现步骤
- 数据库索引
- Apache与tomcat stickysession服务器环境配置
- 一个sql优化的案例
- poj 3070
- 自学php之YAF!第一步,安装配置.