收录日期:2019/05/22 09:36:09 时间:2016/07/24 21:00:22 标签:Java SE
大家好:小弟最近做项目有个问题希望请教各位大哥,分数不多了,请海涵。
我希望在java语言中调用R语言中的Rscript命令,比如:"Rscript -e " + "\"v1 <- c(" + v1 + ");v2 <- c(" + v2 + ");v2/2;\"";
代码如下:
import java.io.*;

public class RTest1 {

public static void main(String[] args) {
try {
String v1 = "3,4,5";
String v2 = "3,4,5";
String command = "Rscript -e " + "\"v1 <- c(" + v1 + ");v2 <- c(" + v2 + ");t.test(v1,v2,alternative=\"greater\")$p.value\"";
//String command = "Rscript -e " + "\"v1 <- c(" + v1 + ");v2 <- c(" + v2 + ");v2/2;\"";
Process process = Runtime.getRuntime().exec(command);
process.waitFor();
BufferedInputStream br = new BufferedInputStream(process.getInputStream());
            BufferedInputStream br2 = new BufferedInputStream(process.getErrorStream()); 
            
/*BufferedReader bReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String stringLine = null;
while ((stringLine = bReader.readLine()) != null) {
System.out.println(stringLine);
}*/
            
            int ch;
            System.out.println("Input Stream:");
            while((ch = br.read())!= -1){
                System.out.print((char)ch);
            }
            System.out.println("Error Stream:");
            while((ch = br2.read())!= -1){
                System.out.print((char)ch);
            } 

} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

结果是什么输出都没有,但是在linux下面单独敲出该命令,命令运行正常,希望各位大哥指点迷津,小弟拜谢
可能有几个方面的问题:
1、标准输入和标准输出都是需要关闭的,你这里都没有关闭,不知道运行程序的时候是否阻塞了,还是程序能够结束?
2、你的命令里面有很多的双引号,Process对双引号的处理也是需要注意的。

我之前也遇到过类似的问题,当时总结了一些东西,现在有些忘了,你可以参考一下这个:
http://blog.csdn.net/ragic/archive/2010/05/12/5583164.aspx
如果正常执行了肯定会有信息的。

Java中存在转义字符,你需要确认你拼的command是否在jvm中是正确的。

最好从command是否执行了去确认。
用Rserve多好了…http://www.rforge.net/Rserve

金山词霸的XdictGrb.dll在win98下怎么用? 为什么在VS2003 C#看不到错误(或异常)对话框? ALTER DATABASE 语句中的database不支持变量吗? 在M当劳,遇见了人生中第一个,也是到目前为止唯一一个ji. 急,完成散分 【原创醒目】这两天关于浮点数的讨论这么火,我觉得还是有必要写点东东了——《再析IEEE浮点数表示法》 活着真好,刚才我差啊点挂了 求教:搭建JB + J2ME 用于开发PAD程序! 谁能告诉我,CSDN现在为何这么冷清了? 怎样分割一个文件保存为两个文件,又将这两个文件还原为一个文件? fso 可以检索到网络硬盘中的 文件吗 哪位高人请指教 多谢了 多关键字排序 招聘兼职VB程序员做网络编程 请问InstallShield 11.5中如何取消安装类型(setup types)窗口? 功能强的让你心动,界面漂亮的让你心动 请问,如果VC.net的程序改写成标准C,其中的LPTSTR、CString、LPCTSTR几个类型该怎么改? 希望大家共同来参与翻译Scott Mitchell的ASP.NET2.0教程 动态树的生成 请问这个错误是怎么来的?有关C#编绎错误求解!! 多核和多个CPU差不多吧? 再次提问同样的问题。SendMessage的问题。这回应该表达的很清楚了。 c# 怎样修改MAC? dbgrid居然不刷新,端点测试就可以,怪! VclSkin是不是免费的? 请教一个问题! 建议论坛管理员,增加贴图的功能,同意的跟一下贴子. winXP IE关闭后出现:DDE Server Window: iexplore.exe -应用程序错误...知道的和遇到过的请进 sqlserver2005的数据加密 无法删除目录,提示:目录不是空的. 昨天又去相亲了