9

XLConnectRでライブラリを使用しようとしています。実行すると

library(XLConnect)

次のエラー メッセージが表示されます。

JAVA_HOME cannot be determined from the Registry

この問題を解決するために、最初にJAVA_HOME変数を設定しました。

Sys.setenv(JAVA_HOME='C:/Program Files (x86)/Java/jre1.8.0_65')
library(XLConnect)

それは私がさらに進むのに役立つように見えますが、別の問題が発生します:

unable to load shared object 'C:/Program Files/R/R-3.2.2/library/rJava/libs/x64/rJava.dll'

なぜ R がロードできないのか不思議rJava.dllです。少なくともこのファイルは、R が検索するフォルダーにあります。

C:\Program Files\R\R-3.2.2\library\rJava\libs\x64

追加した

rJava.dllファイルが存在し、R が検索している場所にあることに注意してください。問題は 32bit 版と 64bit 版の非互換性にあると思います。Rが不平を言うので、私はそれを仮定します:

% 1 is not a valid Win32 application

では、なぜ RWin32 application`? First, my OS is 64bit, second my Java is also for the 64bit and finally, the `rJava.dll` object is located in the folder withは名前に x64` を期待するのでしょうか (つまり、64 ビット バージョンでもあると思います)。

4

2 に答える 2

4

私は同じ問題に直面しました。jvm.dll を見つけてください (JRE のバージョンは異なる場合があります)。

C:\Program Files (x86)\Java\jre1.8.0_65\bin\client

また

C:\Program Files (x86)\Java\jre1.8.0_65\bin\server

Program FilesこのパスをWindowsシステムパスに追加すると、問題ありません.ただし、Javaが64ビットの場合はjreとRのバージョンが一致している必要があることに注意してください。32ビット64 bit R の場合はから起動するため、使用しますProgram Files (x86)32 bit R

私の場合のように、64ビットでエラーが表示されましたここに画像の説明を入力

しかし、32ビットで完全に機能しました ここに画像の説明を入力

于 2015-11-18T19:37:40.507 に答える
3

/の代わりに使用しました\

Sys.setenv(JAVA_HOME='C:\\Program Files (x86)\\Java\\jre1.8.0_65') 
library(XLConnect)

UNIX を使用しています。したがって、自分でテストすることはできませんが、パスも間違っている可能性があります。

この投稿によると、これを使用して検索できます。

find.java <- function() {
    for (root in c("HLM", "HCU")) for (key in c("Software\\JavaSoft\\Java Runtime Environment", 
        "Software\\JavaSoft\\Java Development Kit")) {
        hive <- try(utils::readRegistry(key, root, 2), 
          silent = TRUE)
        if (!inherits(hive, "try-error")) 
          return(hive)
    }
    hive
}

クレジットは、機能については @nograpes に、答えを提供するのを手伝ってくれたこの記事には感謝します。

于 2015-11-20T00:30:03.793 に答える