我需要执行外部工具R并处理该工具中发生的错误(如果有的话).我知道3个函数可以完成我的任务:
shell, system and system2.
Run Code Online (Sandbox Code Playgroud)
为了测试这些,我看到了那个命令
shell("notepad")
Run Code Online (Sandbox Code Playgroud)
打开记事本.据我所知,shell不允许检查错误(没有接口可以查看stderr).
我打电话的时候
system("notepad")
Run Code Online (Sandbox Code Playgroud)
要么
system2("notepad")
Run Code Online (Sandbox Code Playgroud)
stderr 冻结试图制作这些命令.
调用
system("start notepad")
Run Code Online (Sandbox Code Playgroud)
要么
system2("start notepad")
Run Code Online (Sandbox Code Playgroud)
返回警告
Warning message:
running command '"start notepad"' had status 127
Run Code Online (Sandbox Code Playgroud) 我无法获得system2结果.试图执行示例jar文件.
execute_system.R:
workingDir <- "C:/Code"
setwd(workingDir)
command <- "java -jar sample.jar 674"
commandResult <- system2(command, stdout="C:/Code/stdout.txt", stderr="C:/Code/stderr.txt")
cat("commandResult: ", commandResult)
Run Code Online (Sandbox Code Playgroud)
我执行此execute_system.R文件并生成空文件时收到错误消息(stdout.txt,stderr.txt)
commandResult: 127
warning message: running command '"java -jar sample.jar 674"' had status 127
Run Code Online (Sandbox Code Playgroud)
我想读取system2命令结果,需要处理结果数据.
当我执行相同的命令提示符时,我得到了正确的结果
C:/Code>java -jar sample.jar 123
convert from String to int...
Input: 123
Value: 123
Conversion process done!!!
Run Code Online (Sandbox Code Playgroud)
实际的我的Java代码
public class Conversion{
public static void main(String args[]){
System.out.println("convert from String to int...");
String input = args[0];
System.out.println("Input: " + input );
int value = …Run Code Online (Sandbox Code Playgroud)