首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装过程中加载的Java版本不正确

安装过程中加载的Java版本不正确
EN

Stack Overflow用户
提问于 2017-12-13 22:14:44
回答 1查看 289关注 0票数 0

在我的64位Windows 10上安装依赖于Java/rJava的软件包时,我遇到了一个奇怪的问题:

代码语言:javascript
复制
> devtools::install_github("ropensci/tabulizer", INSTALL_opts = "--no-multiarch")
Downloading GitHub repo ropensci/tabulizer@master
from URL https://api.github.com/repos/ropensci/tabulizer/zipball/master
Installing tabulizer
Downloading GitHub repo ropensci/tabulizerjars@master
from URL https://api.github.com/repos/ropensci/tabulizerjars/zipball/master
Installing tabulizerjars
"C:/PROGRA~1/R/R-34~1.2/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD INSTALL  \
  "C:/Users/binis/AppData/Local/Temp/Rtmpiw2khr/devtools4d7472ae39f9/ropensci-tabulizerjars-60b7cec"  \
  --library="C:/Users/binis/Documents/R/win-library/3.4" --install-tests 

* installing *source* package 'tabulizerjars' ...
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error: package or namespace load failed for 'tabulizerjars':
 .onLoad failed in loadNamespace() for 'rJava', details:
  call: inDL(x, as.logical(local), as.logical(now), ...)
  error: unable to load shared object 'C:/Users/binis/Documents/R/win-library/3.4/rJava/libs/i386/rJava.dll':
  LoadLibrary failure:  %1 is not a valid Win32 application.

Error: loading failed
Execution halted
*** arch - x64
ERROR: loading failed for 'i386'
* removing 'C:/Users/binis/Documents/R/win-library/3.4/tabulizerjars'
Installation failed: Command failed (1)
"C:/PROGRA~1/R/R-34~1.2/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD INSTALL  \
  "C:/Users/binis/AppData/Local/Temp/Rtmpiw2khr/devtools4d744e067cae/ropensci-tabulizer-3aad163"  \
  --library="C:/Users/binis/Documents/R/win-library/3.4" --install-tests 

ERROR: dependency 'tabulizerjars' is not available for package 'tabulizer'
* removing 'C:/Users/binis/Documents/R/win-library/3.4/tabulizer'
Installation failed: Command failed (1)

现在我意识到这看起来像是我弄乱了Java版本或路径信息。但事实并非如此(据我所知):

代码语言:javascript
复制
> library(rJava)
> .jinit()
> .jcall("java/lang/System", "S", "getProperty", "java.version")
[1] "1.8.0_151"
> .jcall("java/lang/System", "S", "getProperty", "java.home")
[1] "C:\\Program Files\\Java\\jre1.8.0_151"
> .jcall("java/lang/System", "S", "getProperty", "sun.arch.data.model")
[1] "64"
> .jcall("java/lang/System", "S", "getProperty", "os.arch")
[1] "amd64"

这表明操作系统架构和Java架构匹配(R也是64位),java.home设置正确,而且rJava在我的机器上运行良好。

现在我不确定我是否正确理解了错误消息,但似乎R在安装过程中试图加载32位版本的rJava,但失败了。我通过在我的机器上将java home更改为32位安装来进行测试:

代码语言:javascript
复制
> options(java.home="C:/Program Files (x86)/Java/jre1.8.0_151") #32-bit version
> library(rJava)
Error: package or namespace load failed for ‘rJava’:
 .onLoad failed in loadNamespace() for 'rJava', details:
  call: inDL(x, as.logical(local), as.logical(now), ...)
  error: unable to load shared object 'C:/Users/binis/Documents/R/win-library/3.4/rJava/libs/x64/rJava.dll':
  LoadLibrary failure:  %1 is not a valid Win32 application.

错误是相同的,这支持了我的假设。然而,我不明白为什么R会在安装过程中尝试使用不同的Java版本,或者我如何阻止它。我已经测试了INSTALL_opts = c("--no-multiarch", "--no-test-load"), type="source"是否会执行任何操作,但错误保持不变...

EN

回答 1

Stack Overflow用户

发布于 2017-12-14 00:17:24

在我花了更多的时间在google/stackoverflow上之后,我发现install_github的语法显然与install.packages略有不同。使用“args”调用选项,而不是´INSTALL_opts´。因此,下面的命令将安装示例包,而不会出现“投诉”:

代码语言:javascript
复制
devtools::install_github("ropensci/tabulizer", 
                         args = c("--no-multiarch", "--no-test-load"))

我把这个留在这里,以防其他人遇到同样的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47795124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档