Process 调用JAVA 命令的问题

东方星痕 2014-02-06 06:36:48
  private static string checkJRE(String path)
{
string temp = String.Empty;
//实例化一个进程类 
Process cmd = new Process();
cmd.StartInfo.FileName = "\"" + @path + "\"";
//将cmd的标准输入和输出全部重定向到.NET的程序里  
cmd.StartInfo.UseShellExecute = false; //此处必须为false否则引发异常  
cmd.StartInfo.RedirectStandardInput = true; //标准输入 
cmd.StartInfo.RedirectStandardOutput = true; //标准输出

//不显示命令行窗口界面 
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.Start(); //启动进程  
//获取输出 
//需要说明的:此处是指明开始获取,要获取的内容, //只有等进程退出后才能真正拿到 
temp = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();//等待控制台程序执行完成 
cmd.Close();//关闭该进程
return temp;
}


这样写时,只能读取到其它盘的且路径没有空格的java.exe执行的回写数据,如果是C盘如:C:\Program Files\Java\jre7\bin\java.exe 的就读取不了

把doc窗口显示出来时,命令应该是执行了的,但是就是取不到回写数据,不知道怎么做了。。。

...全文
273 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
东方星痕 2014-02-08
  • 打赏
  • 举报
回复
引用 7 楼 feiyun0112 的回复:
文件存在吗?
你在命令行提示符下直接运行看看


肯定存在啊,我都执行过的
feiyun0112 2014-02-08
  • 打赏
  • 举报
回复
文件存在吗?
你在命令行提示符下直接运行看看
东方星痕 2014-02-08
  • 打赏
  • 举报
回复
引用 5 楼 rtdb 的回复:
"C:\Program Files\Java\jre7\bin\java.exe" 这样肯定没问题,你自己跟一下,看运行时cmd.StartInfo.FileName是什么。
我试了很久了...都不行啊,,, 我测试了这三个,只有第一个运行不成功... list.Add(@"C:\Program Files\Java\jre7\bin\java.exe"); list.Add(@"D:\SDK\JDK\JDK1.6.0_43\jdk1.6.0_43\bin\java.exe"); list.Add(@"D:\Program Files\Java\bin\java.exe"); 测试的代码:
 List<string> list = new List<String>();
            list.Add(@"C:\Program Files\Java\jre7\bin\java.exe");
            list.Add(@"D:\SDK\JDK\JDK1.6.0_43\jdk1.6.0_43\bin\java.exe");
            list.Add(@"D:\Program Files\Java\bin\java.exe");
            String temp = string.Empty;
            foreach (string path in list)
            {
                temp += "\n\n\n" + path + "\n\n\n" + checkJRE(path);
            }
            textBox1.Text = temp;
这样调用就第一个执行不了,说明不是空格的问题了啊,程序我用管理员权限运行也还是执行不了第一个
rtdb 2014-02-08
  • 打赏
  • 举报
回复
"C:\Program Files\Java\jre7\bin\java.exe" 这样肯定没问题,你自己跟一下,看运行时cmd.StartInfo.FileName是什么。
东方星痕 2014-02-08
  • 打赏
  • 举报
回复
引用 3 楼 feiyun0112 的回复:
cmd.StartInfo.Arguments = "aaa"; ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
这参数加不加都一样.... 有空格的读不到,没空格才读得到
feiyun0112 2014-02-08
  • 打赏
  • 举报
回复
cmd.StartInfo.Arguments = "aaa";

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
东方星痕 2014-02-08
  • 打赏
  • 举报
回复
引用 1 楼 rtdb 的回复:
你现在是这样: "C:\Program Files\Java\jre7\bin\java.exe aaa" 你要变成这样: "C:\Program Files\Java\jre7\bin\java.exe" aaa
但是如果不加执行参数,也是取不到回写数据啊
rtdb 2014-02-07
  • 打赏
  • 举报
回复
你现在是这样: "C:\Program Files\Java\jre7\bin\java.exe aaa" 你要变成这样: "C:\Program Files\Java\jre7\bin\java.exe" aaa

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧