我有一行代码可以捕获安装的Java
版本的输出:
version <- system2("java","-version", stdout=TRUE)
但是,如果在.onLoad
函数中创建程序包时包括该行代码,则在构建时会遇到问题。
.onLoad <- function(libname, pkgname){
version <- system2("java","-version", stdout=TRUE)
if(length(version)==0){
stop("Missing version")
}
}
使用默认的RStudio“ Clean and Rebuild”,我既可以看到输出显示在命令行中(Java部分),又可以看到代码有错误,表明输出的长度为0:
==> Rcmd.exe安装--preclean --no-multiarch --with-keep.source测试包
*安装到库'C:/Users/JNolis2/Documents/R/win-library/3.5'
*正在安装 source 包“ testpackage” ...
** R
**字节编译并准备用于延迟加载的包
**帮助
***安装帮助索引
转换软件包“ testpackage”的帮助
查找HTML链接...您好html
完成
**建筑包装指数
**测试是否可以加载已安装的软件包
java版本“ 10.0.1” 2018-04-17
Java(TM)SE运行时环境18.3(内部版本10.0.1 + 10)
Java HotSpot(TM)64位服务器VM 18.3(内部版本10.0.1 + 10,混合模式)
错误:“ testpackage”的软件包或名称空间加载失败:
.onLoad在'testpackage'的loadNamespace()中失败,详细信息:
通话:fun(libname,pkgname)
错误:缺少版本
错误:加载失败
执行停止
错误:加载失败
- 删除“ C:/Users/JNolis2/Documents/R/win-library/3.5/testpackage”
在R CMD安装中
以状态1退出。
即使在此步骤期间,如何确保输出被捕获?