XLConnect, rJava и сборка пакетов
Я пишу функцию, которую я хочу включить в пользовательский пакет (MYPACKAGE). Функция выглядит следующим образом:
readSchedule <- function(FILE){
WB = loadWorkbook(FILE)
WS= readWorksheet(WB, sheet = 'Sheet1',header = TRUE)
return(WS)
}
где FILE - это имя файла Excel, который я хочу прочитать. При написании этой функции я хочу, чтобы она импортировала XLConnect, поскольку это пакет, который она использует. Я поместил код заголовка, определяющий функцию:
@param FILE Excel file
@return Excel data
@export
@import XLConnect
Я также добавил импорт (XLConnect) в NAMESPACE и файл ОПИСАНИЕ MYPACKAGE. Пакет собирается нормально (или, по крайней мере, сначала он выглядит нормально), но когда я запускаю "Проверить пакет", он не работает и выдает следующую ошибку:
* installing *source* package 'MYPACKAGE' ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: fun(libname, pkgname)
error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
Error: loading failed
Execution halted
*** arch - x64
ERROR: loading failed for 'i386'
Я имею правильную версию Java и могу загрузить rJava просто отлично. Я пытался импортировать rJava (аналог XLConnect), но я получаю ту же ошибку. Ниже моя сессия Info:
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] MYPACKAGE
loaded via a namespace (and not attached):
[1] chron_2.3-45 data.table_1.9.4 digest_0.6.8 lubridate_1.3.3 memoise_0.2.1 plyr_1.8.1
[7] Rcpp_0.11.1 reshape2_1.4 rJava_0.9-6 stringr_0.6.2 tools_3.1.2 XLConnect_0.2-7
1 ответ
Похоже, что вы собираете свой пакет на 64-битной машине Windows с установленной 64-битной версией Java. При проверке вашей посылки с помощью R CMD check
По умолчанию R также пытается проверить ваш пакет на других суб-архитектурах (i386, 32-bit), которые в вашем случае дополнительно потребуют 32-битную установку Java.
Если вы хотите проверить свой пакет также для i386
Вы можете просто дополнительно установить 32-битную Java. Другой вариант - передать вариант --no-multiarch
на ваш R CMD check
позвоните, например, R CMD check --no-multiarch MYPACKAGE
,