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,

Другие вопросы по тегам