1. ホーム
  2. r

[解決済み] Win7 64bitでrJavaパッケージとRの併用

2022-04-26 18:54:33

質問

をインストールしようとしています。 rJava をWin 7 64bitのコンピュータにインストールしました。以下のように実行すると

install.packages("rJava")

は、すべてうまくいっているようです。

Installing package(s) into ‘C:/Users/djq/Documents/R/win-library/2.13’
(as ‘lib’ is unspecified)
trying URL 'http://software.rc.fas.harvard.edu/mirrors/R/bin/windows/contrib/2.13/rJava_0.9-1.zip'
Content type 'application/zip' length 654936 bytes (639 Kb)
opened URL
downloaded 639 Kb

package 'rJava' successfully unpacked and MD5 sums checked

The downloaded packages are in
    C:\TEMP\RtmpW2eAUw\downloaded_packages

が、ライブラリを読み込もうとすると library(rJava) 以下のようなエラーが発生します。

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: inDL(x, as.logical(local), as.logical(now), ...)
  error: unable to load shared object 'C:/Users/me/Documents/R/win-library/2.13/rJava/libs/x64/rJava.dll':
  LoadLibrary failure:  %1 is not a valid Win32 application.

Error: package/namespace load failed for 'rJava'

私は、Java JRE(32ビット版と64ビット版の両方を試す)とJDK(32ビット版と64ビット版の両方を使用)をインストールしました。私のRのバージョンは R version 2.13.1 (2011-07-08) で、RStudioを使用しています。

32bitのRで試したところ rJava を使用することができます。問題は、単に rJava はR 64bitでは実行されないのですか?パッケージが64ビット用ではなく32ビット用であることを見分けるにはどうしたらよいでしょうか?


edit: 今投稿しました。 R.version() :

> R.Version()
$platform
[1] "x86_64-pc-mingw32"

$arch
[1] "x86_64"

$os
[1] "mingw32"

$system
[1] "x86_64, mingw32"

$status
[1] ""

$major
[1] "2"

$minor
[1] "13.1"

$year
[1] "2011"

$month
[1] "07"

$day
[1] "08"

$`svn rev`
[1] "56322"

$language
[1] "R"

$version.string
[1] "R version 2.13.1 (2011-07-08)"

解決方法は?

アップデート(2018年7月)しました。

最新のCRAN版rJavaには jvm.dll を手動で設定しなくても、自動的に PATH または JAVA_HOME . しかし、そのことに注意してください。

  • 32ビットRでrJavaを使用するには、以下のものが必要です。 Windows x86版Java
  • 64ビットRでrJavaを使用するには、以下のものが必要です。 Windows x64版Java
  • R パッケージを multiarch (デフォルト) でビルドまたはチェックするには、次のようにする必要があります。 両方をインストールする Windows x64用Java と同様に Windows x86版Java . Win 64 の場合、前者のインストールは C:\Program files\Java\ で、後者は C:\Program Files (x86)\Java\ というように、両者が衝突しないようにします。

Javaバージョン9より、x86(win32)のサポートは終了しています。したがって、最新の動作するマルチアーキテクチャのセットアップは、以下の両方をインストールすることです。 jdk-8u172-windows-i586.exe jdk-8u172-windows-x64.exe で、CRANからバイナリパッケージを取得します。

install.packages("rJava")

CRANからのバイナリパッケージは、それだけでjvmを拾ってくるはずです。 専門家のみ : rJava をソースからビルドするには --merge-multiarch フラグを使用します。

install.packages('rJava', type = 'source', INSTALL_opts='--merge-multiarch')


古いアンサーです。

(注意: 他の回答/コメントで多くの人がJAVA_HOMEを削除するように言っているので、それを考慮してください。私は最近この問題を再検討していないので、以下のすべての手順がまだ必要であるかどうかわかりません)

Windows 7 64bit で R + rJava を起動するための簡単なアドバイスです。いくつかの可能性がありますが、ほとんどの場合、致命的な欠陥があります。以下は、私にとってうまくいった方法です。

jvm.dllをPATHに追加します。

R<->JavaブリッジであるrJavaはjvm.dllを必要としますが、RはそのDLLを見つけるのが困難です。それは、以下のようなフォルダに存在します。

C:\Program Files\Java\jdk1.6.0_25\jre\bin\server

または

C:\Program Files\Java\jre6\jre\bin\client

あなたのものがどこにあるにせよ、そのディレクトリをWindowsのPATH変数に追加してください。(Windows -> "Path" -> "Edit environment variables to your account" -> PATH -> edit the value.).

PATH にすでに Java が入っているかもしれません。その場合、クライアント/サーバ・ディレクトリは、すでにPATH上にあるものと同じJava "home"ディレクトリの中にあるはずです。

念のため、アーキテクチャが一致していることを確認してください。 Program Files は64ビットなので、R64を実行する必要があります。もし、Javaが Program Files (x86) それは32ビットだから、32ビットのRを使うんだ。

WindowsメニューからRを再立ち上げ

Rが起動している場合は、終了します。

スタートメニューから、R / RGUI, RStudio を起動します。これは非常に重要で、RにPATHの変更を認識させるためです。

rJava 0.9.2をインストールします。

それ以前のバージョンでは動作しません ミラーは最新ではないので、www.rforge.net のソースにアクセスしてください。 http://www.rforge.net/rJava/files/ . そこにあるアドバイスに注目してください

“Please use

`install.packages('rJava',,'http://www.rforge.net/')`

to install.”

ほぼ正解です。これは実際に動作します。

install.packages('rJava', .libPaths()[1], 'http://www.rforge.net/')

句読点に注意 謎の「.libPaths()[1]」は、パッケージをプライマリ・ライブラリ・ディレクトリにインストールするようにRに指示するだけです。この値を空白にすると、デフォルトのはずなのに、なぜかうまくいきません。