【问题标题】:XLConnect: Attaching to 64 bit RXLConnect:连接到 64 位 R
【发布时间】:2017-03-14 19:10:25
【问题描述】:

我需要将一些 R 数据导出为格式化的 excel 文件,并且之前在 R 中成功使用了 XLConnect 和 xlsx 包。我最近搬到了 64 位 R 并且无法工作。我在一堆其他包中处理了一些 Oracle/Java 架构冲突。我敢肯定这里发生了类似的事情,但我无法破解它。

当我打电话给library(XLConnect)rJavaXLConnectJars 时,附上没有问题。

这是错误和会话信息:

> library(XLConnect)
Loading required package: XLConnectJars
Error : .onLoad failed in loadNamespace() for 'XLConnect', details:
  call: .jfindClass(as.character(class))
  error: class not found
Error: package or namespace load failed for ‘XLConnect’

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

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] XLConnectJars_0.2-12

loaded via a namespace (and not attached):
[1] rsconnect_0.4.3 tools_3.3.1     rJava_0.9-8    

我在尝试附加 xlsx 时遇到类似错误。

> library(xlsx)
Loading required package: rJava
Loading required package: xlsxjars
Error : .onAttach failed in attachNamespace() for 'xlsx', details:
  call: .jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook")
  error: java.lang.UnsupportedClassVersionError: Bad version number in .class file
Error: package or namespace load failed for ‘xlsx’

如果我切换到 32 位 R,XLConnectxlsx 都可以正常运行。我真的需要运行 64 位 R 来满足其他要求。

【问题讨论】:

  • 我使用 readxl 导入 Excel 文件 - 没有问题。我只有几个需要格式化 Excel 输出的项目。我的 JAVA_HOME 变量确实指向 64 位 jre。 rJava 加载正常 - 应该使用 64 位 Java。

标签: r xlconnect r-xlsx


【解决方案1】:

在不涉及技术细节的情况下,您将需要一个 64 位版本的 Java 来搭配 64 位版本的 R。

尽管这将解决您发布的问题,但我认为放弃基于 Java 的 XLConnectxlsx-packages 连接到 Excel 会为您提供更多帮助。相反,请使用openxlsx-package。它与其他两个做同样的事情(是的,也导出格式化的 Excel 表格),但不依赖于 Java。

Java除了没有64位/32位的问题外,还有一些优点:

首先,在处理大型表时,您不会遇到 OutOfMemoryErrors:

错误:OutOfMemoryError (Java):超出 GC 开销限制。

其次,即使基于 Java 的包没有显示错误,它们也可能需要很长时间才能处理大型表。 openxlsx 没有这些问题。

最后和个人注意:起初我在包之间切换时犹豫不决,但它解决了我不喜欢基于 Java 的包的所有问题,并且语法非常相似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2015-08-28
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多