收录日期:2019/07/17 13:20:25 时间: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

请教关于提取标结构的软件工具 自杀未遂, 郁闷 自杀未遂, 郁闷 自杀未遂, 郁闷 程序员是不是应该追求更宽松的工作环境。。。 VB。NET中调用存储过程的问题 自杀未遂, 郁闷 自杀未遂, 郁闷 自杀未遂, 郁闷 帮忙啊 比较复杂的问题。设计流程的处理!问题**** 到珠海当程序员有发展前途吗? 菜鸟的一个问题 高手请帮忙,好急呀 ?????????????? 一个一直没有解决的问题,我把代码贴出来了,还要什么大家说呀 淡月儿生日快乐... SSL原理解密 如何解word2000的密码? 如何让POP,SMTP,NNTP,走SSL??? 一个很好的分机会,不能错过了! 另开的帖子... 请问能举一个组件引用ASP对象的例子来吗?=======急呀! 高手帮帮我呀?好急呀 怎么把double型的转成string 请问,哪有VS.NET下载(下载速度尽量快点) 有没有只在关闭窗口时才执行的事件的方法啊!谢谢 Delphi5开发人员指南》1087页的例子怎样用的? 请问各路高手:在delphi中怎样实现打印自动换行? 请问表单如何自动提交?