web-dev-qa-db-ja.com

RでWin7 64ビット上のrJavaパッケージを使用する

Win 7 64ビットのコンピューターにrJavaをインストールしようとしています。走るとき

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を使用しています。

32ビットRを使用しようとすると、rJavaを正常にロードできます。 rJavaがR 64ビットで実行されないというだけの問題ですか?パッケージが64ではなく32だけであるかどうかを確認するにはどうすればよいですか?


編集:ちょうど投稿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)"
142
djq

更新(2018年7月):

RJavaの最新のCRANバージョンは、PATHまたはjvm.dllを手動で設定することなく、Java_HOMEを自動的に検出します。ただし、次のことに注意してください。

  • 32ビットRでrJavaを使用するには、 Java for Windows x86 が必要です
  • 64ビットRでrJavaを使用するには、 Java for Windows x64 が必要です。
  • Multi-Arch(デフォルト)でRパッケージをビルドまたは確認するには、両方をインストールする必要がありますJava For Windows x64およびWindows x86用のJava。 Win 64では、前者はC:\Program files\Java\にインストールされ、後者はC:\Program Files (x86)\Java\にインストールされるため、競合しません。

Javaバージョン9では、x86(win32)のサポートが廃止されました。したがって、最新の動作するマルチアーチセットアップは、 jdk-8u172-windows-i586.exejdk-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 64ビットで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->値の編集。)

PATHにJavaが既にある場合があります。その場合は、PATHにあるディレクトリと同じJava "home"ディレクトリでクライアント/サーバーディレクトリを見つける必要があります。

安全のために、アーキテクチャが一致することを確認してください。Program FilesにJavaがある場合、64ビットなので、R64を実行する必要があります。 Program Files (x86)にJavaがある場合、それは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にパッケージをプライマリライブラリディレクトリにインストールするように指示するだけです。何らかの理由で、値をデフォルトのままにしても、値を空白のままにすると機能しません。

146
misterbee

RJavaを機能させるには、コンピューターの構成に大きく依存します。

  1. RとJDK/JREの両方で同じものを使用 32ビットまたは64ビットバージョンにする必要があります。これの混合物は決して機能しません(少なくとも私にとって)。
  2. 64ビットを使用バージョンを確認する場合は、Java_HOMEを環境変数として設定しないでください。この変数が設定されている場合、何らかの理由で(少なくとも私にとっては)rJavaは機能しません。 R内で簡単に確認できます。Java_HOMEは

    Sys.getenv("Java_HOME")
    

Java_HOMEを設定する必要がある場合(たとえば、mavenなどに必要な場合)、rJavaをロードする前に、次のコードでRセッション内で非アクティブ化できます。

if (Sys.getenv("Java_HOME")!="")
  Sys.setenv(Java_HOME="")
library(rJava)

ほとんどの場合、これでうまくいくはずです。さらに、これはRでWin7 64ビットでrJavaパッケージを使用する問題も修正します。環境変数を R:rJavaパッケージのインストールに失敗しました から設定解除するというアイデアを借りました。

107
user2161065

私にとっては、settingJava_HOMEが(ここで示した別の回答のように設定を解除する代わりに)トリックを行いました。 Windowsの場合:

set Java_HOME="C:\Program Files\Java\jre7\"

またはR内:

Sys.setenv(Java_HOME="C:\\Program Files\\Java\\jre7\\")

しかし、おそらく最良の解決策(rJava 0.9-4以降)は、R内でWindowsのJava_HOME設定を完全にオーバーライドしています:

options(Java.home="C:\\Program Files\\Java\\jre7\\")
library(rJava)
29
ROLO

最後の質問には簡単な答えがあります。

> .Machine$sizeof.pointer
[1] 8

意味R64を実行しています。 32ビットRを実行している場合、4を返します。64ビットOSを実行しているからといって、64ビットRを実行するわけではなく、エラーメッセージからはそうではないようです。

編集:パッケージにバイナリがある場合、それらは別々のディレクトリにあります。詳細はOSに依存します。 ...rJava/libs/x64/...でdllを見つけようとしたときにLoadLibraryエラーが発生したことに注意してください。私のMacOSシステムでは、... rJava/libs/... `フォルダーには3つのサブディレクトリがあります:i386、ppc、およびx86_64。 (ppcファイルは明らかに無駄な荷物です。)

7
42-

ネクロごめんなさい。私も同じ問題にぶつかり、rJavaJava_HOMEがJREを指すことを期待していることがわかりました。 JDKがインストールされている場合、ほとんどの場合、Java_HOMEはJDKを指します。私の簡単な解決策:

Sys.setenv(Java_HOME=paste(Sys.getenv("Java_HOME"), "jre", sep="\\"))
4
friendzis

この問題に遭遇したときにインストールされたJavaパッケージを判別するのに多少苦労しました。前の答えは私にはうまくいきませんでした。整理するには、次のように入力しました。

Sys.setenv(Java_HOME="C:/Program Files/Java/

そして、タブを押すと、2つの推奨ディレクトリは「jre1.8.0_31 /」と「jre7 /」でした

Jre7は私の問題を解決しませんでしたが、jre1.8.0_31 /は解決しました。最終的な回答が実行されていました(library(rJava)の前):

Sys.setenv(Java_HOME="C:/Program Files/Java/jre1.8.0_31/")

64ビットWindows 8.1を使用しています。これが他の人の助けになることを願っています。

更新:

バージョンをチェックして、Xがどうあるべきかを判断してください(この投稿以降、私のものは数回変更されています)。

Sys.setenv(Java_HOME="C:/Program Files/Java/jre1.8.0_x/")
3
Optimus

RJavaに関連する問題がありました。ロードされますが、それに依存するパッケージはロードされません。

実際の修正がインストーラにi386を忘れさせることである場合、ユーザーはjvm.dllとPATHおよびJava_HOMEで多くの時間を浪費する可能性があります。 install.packagesのオプションを使用します。 (これはdratライブラリが使用される場合にも機能します。(クレジットはDasonに送られます)

install.packages("SqlRender",INSTALL_opts="--no-multiarch")

また、次のようなwinコマンドを使用して、ユーザーパスのみを変更できます。

setx PATH "C:\Program Files\Java\jre1.8.0_102\bin\server;%PATH%"
3
userJT

これは、アップデート(2018年7月)のフォローアップです。 64ビットWindows 10を使用していますが、Rtoolsを使用して32ビットと64ビットの両方のソースからrパッケージをビルドするように設定されています。私の64ビットjdkはjdk-11.0.2です。できるときは、RStudioですべてを行います。 2019年3月現在、rjavaは<= jdk11でテストされています。 github issue#157 を参照してください。

  • @Jeroenによる更新(2018年7月)ごとにjdkをデフォルトの場所にインストールします。
  • Rスタジオで、Java_HOMEを64ビットjdkに設定します

Sys.setenv(Java_HOME="C:/Program Files/Java/jdk-11.0.2")

  • オプションで環境変数を確認します

Sys.getenv("Java_HOME")

  • Githubページの推奨に従ってパッケージをインストールする

install.packages("rJava",,"http://rforge.net")

参考までに、rstudioスクリプティングコンソールはダブルコンマが好きではありません...しかしそれは動作します!

0
Aaron Dickey

ブラウザには32ビットJREが必要ですが、RとrJavaには64ビットJREが必要です。 32ビットJREはデフォルトの場所にインストールされます。いくつかの実験の後、rJava(バージョン.9-6)を機能させるためにmisterbee'sの提案の1つだけが必要であることがわかりました。 64ビットJavaインストールにパスを追加するだけでした:

C:\apps\Java\jre\bin\server\jvm.dll

パス環境変数の先頭に移動し(パスは異なる可能性が高い)、ser2161065のようにJava_HOMEを削除します。これをエントリーのすぐ前に置きます

C:\ProgramData\Oracle\Java\javapath

これは、Oracleインストーラーがパスの先頭に挿入し、32ビットJREへのいくつかのシンボリックリンクを指します。エントリを64ビットjvm.dllに追加すると、rJavaが必要なものを見つけることができたように見えます。

0

Windows 7 x64マシンからアンインストール 明らかに冗長なJava softwareによって問題を解決しました。最初にすべてのJavaアプリケーションをアンインストールし、then 新しいJavaバージョンをインストール。 (後のI R 3.4.3 x86_64-w64-mingw32がJavaパスを指す 、これは本当の問題だとは思わないが、言及するだけである。)今日だけJava 8 Update 161(64ビット)8.0.1610.12が残っていました。この後、install.packages("rJava"); library(rJava)は完全に機能しました。

0
jay.sf

これはアップデートだと思います。 Javacが見つかりません および Windowsコマンドプロンプトでjavacが動作しない に従って、JDKをインストールするまで、rJavaを(Windowsに)インストールできませんでした。私が得ていたメッセージは

'javac' is not recognized as an internal or external command, operable program or batch file.

JDKにはJREが含まれており、 https://cran.r-project.org/web/packages/rJava/index.html 現在のバージョン(0.9-7発行2015-Jul-29 )rJava

SystemRequirements:     Java JDK 1.2 or higher (for JRI/REngine JDK 1.4 or higher), GNU make

Javacが見つからないためにrJavaがインストールされず、JREがインストールされている場合は、JDKを試してください。また、Java_HOMEがJREではなくJDKを指していることを確認してください。

0
woodvi
  1. https://Java.com/en/download/windows-64bit.jsp からJavaをダウンロードします。64ビットWindowsの場合は\ Install it
  2. Java開発キットを https://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html for 64-bit windows\installからダウンロードしますそれ
  3. 次に、desktop¥Properties¥Advanced system settings¥Advanced¥Environment Variables¥Under System variablesにある「This PC」アイコンを右クリックし、Path¥Select¥Click¥New¥Copyをクリックして、パス「C:¥Program Files¥Java¥jdk1」を貼り付けます。 .8.0_201\bin」および「C:\ Program Files\Java\jre1.8.0_201\bin」(引用符なし)\ OK\OK\OK

注:jdk1.8.0_201およびjre1.8.0_201は、Java開発キットとJavaのバージョンに応じて変更されます

  1. [環境変数]ウィンドウで、[ユーザーのユーザー変数]に移動し、[新規作成]、[変数名]の[Java_HOME]をクリックし、変数値を[C:\ Program Files\Java\jdk1.8.0_201\bin]に押します。

インストールを確認するには、CMD\Type javac\Press Enterを開き、Java\press Enterと入力します enter image description here

RStudioで実行

Sys.setenv(Java_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")

注:jdk1.8.0_201は、Java開発キットのバージョンに応じて変更されます

これで、rJavaパッケージを問題なくインストールしてロードできます。

0
Bappa Das