当我尝试在java中通过ProcessBuilder运行window的cmd命令时出现错误:

  1. public static void main(String [] args) throws IOException {
  2. ProcessBuilder builder = new ProcessBuilder();
  3. Process process = builder.command("dir d:\\").start();
  4. InputStream inputStream = process.getInputStream();
  5. BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"gb2312"));
  6. String line = null;
  7. while((line = br.readLine()) != null) {
  8. System.out.println(line);
  9. }
  10. }
出错如下:
Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at com.xjl456852.processBuilder.ProcessBuilderTest.main(ProcessBuilderTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:385)
at java.lang.ProcessImpl.start(ProcessImpl.java:136)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
... 6 more

即使我把第三行语句改为下面的,仍然出错
  1. Process process = builder.command("cmd.exe /c dir d:\\").start();

后来我看许多人都遇到这种情况,但是没有人说解决方案的,有人就直接放弃了:
所以我又试了各种方式,终于解决了这个问题,这两种方案执行都没有问题.提供给遇到这种问题的朋友一种参考
方法一:
  1. public static void main(String [] args) throws IOException {
  2. ProcessBuilder builder = new ProcessBuilder();
  3. List<String> list = new ArrayList<>();
  4. list.add("cmd.exe");
  5. list.add("/c");
  6. list.add("dir");
  7. list.add("d:\\");
  8. Process process = builder.command(list).start();
  9. InputStream inputStream = process.getInputStream();
  10. BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"gb2312"));
  11. String line = null;
  12. while((line = br.readLine()) != null) {
  13. System.out.println(line);
  14. }
  15. }
方法二:
  1. public static void main(String [] args) throws IOException {
  2. ProcessBuilder builder = new ProcessBuilder();
  3. Runtime runtime = Runtime.getRuntime();
  4. Process process = runtime.exec("cmd.exe /c dir d:\\");
  5. InputStream inputStream = process.getInputStream();
  6. BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"gb2312"));
  7. String line = null;
  8. while((line = br.readLine()) != null) {
  9. System.out.println(line);
  10. }
  11. }




解决方案--java执行cmd命令ProcessBuilder--出错Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2(xjl456852原创)的更多相关文章

  1. Java堆空间溢出解决方法 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    一般通过java -jar filename.jar运行jar包,但是当运行的java程序需要较大的内存时,可能会造成堆空间溢出. 例如,加载了几个G大小的json文件,运行报错: Exception ...

  2. java使用类数组 报错Exception in thread "main" java.lang.NullPointerException

    源代码如下: Point[] points=new Point[n];//Point是一个类 for(int i=0;i<n;i++) { System.out.print("请输入x ...

  3. java编译过程中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError

    原因:这个问题确实是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误. 以下是报错截图: 1.解决措施就是保证jvm(java命令)和jdk(javac命令)版本 ...

  4. Exception in thread "main" java.lang.NoClassDefFoundError: UDP_Receive (wrong na me: com/ray/net/UDP_Receive)

    一.事件经过 今晚学习java网络编程,在eclipse中写了两个个java文件,一个发送端UDP_Send2.java,一个接收端UDP_Receive.java.实现发送端键盘录入信息,通过UDP ...

  5. Sqoop异常:Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject

    18/12/07 01:09:03 INFO mapreduce.ImportJobBase: Beginning import of staffException in thread "m ...

  6. java执行cmd命令并获取输出结果

    1.java执行cmd命令并获取输出结果 import java.io.BufferedReader; import java.io.InputStreamReader; import org.apa ...

  7. Java 控制台执行带自定义包定义的类,出现“Exception in thread "main" java.lang.NoClassDefFoundError: ConnectSQLServer (wrong name: sine/ConnectSQLServer)”

    1.先说明一下代码实现:自定义package sine, 源代码保存路径为:E:\JSP\HibernateDemo\HibernateDemoProject\src\sine\ConnectSQLS ...

  8. 【异常】idea执行Main方法出现 Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest

    一.异常复现步骤 1)首先得是一个Spring MVC项目 注:Spring Boot项目有内置的web 容器,不会出现该问题 2)main方法存在于使用HttpServletRequest类的类中 ...

  9. Exception in thread "main" java.util.ConcurrentModificationException解决方案

    我想判断一个集合里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素, 当时的做法是: public class ListIterator ...

随机推荐

  1. iOS中block实现的探究

    [0. Brief introduction of block] Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C语言的扩展,用来实现匿名函数的特性. 用维基百科的话来说,Blo ...

  2. 手游2dx面试笔记一

    第一轮IQ测试:都来面试程序了,相信IQ再怎么也坑不到哪里去吧.要问什么样的题,几页纸呐, 如:1.找出不同类:羚羊.斑马.鲨鱼 2.在()里添一字使2边都能组词:木()料 3.中间值?:1,2,4, ...

  3. android GestureDetector 手势的判断

    import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Ges ...

  4. nginx 配置访问正则匹配

    server{ listen 80; server_name api.zyy.com; root /var/www/api_zyy; index index.php; location ~ /asse ...

  5. http://msh.baidu.com/UTWpR6wY4722

    超人的计算机专业应届研究生个人简历,但企业不需要 前几天和一位做人力资源的朋友在饭店里面喝酒,聊起来大学生找工作不好找的话题.我的这个朋友对这个还真比较感兴趣,说着说着从公文包里拿出来一份简历递给我看 ...

  6. 打印HTML页面部分区域javascript代码

    function preview(oper) { if (oper < 10) { bdhtml = window.document.body.innerHTML; //获取当前页的html代码 ...

  7. 关于textbox.attributes["value"]的问题

    在“修改”时,出现这个问题,后台点击修改时,应该是文本框出现一些初始值 BLL.manager bll = new BLL.manager(); Model.manager model = bll.G ...

  8. 【nodejs学习】2.网络相关

    1.官方文档的一个小例子 //http是内置模块 var http = require('http'); http.createServer(function(request, response){ ...

  9. lvs+keepalived+nginx+tomcat

    # 拓扑如下所示 # 节点分布情况 LVS-dr-master eth0: 192.168.146.141 LVS-dr-slave eth0: 192.168.146.142 nginx1: eth ...

  10. 学习在创建好的工程里面添加CoreData

    在学习CoreData中, 在建工程后, 没有添加, 于是就参考网络文章进行更改. 这几天在学习做一个ios的小项目,项目中需要对数据进行基本的增删改查操作.于是就想用一把CoreData.但在创建项 ...