R7でのWin7 64ビットでのrJavaパッケージの使用


149

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

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を使用すると、正常にロードできますrJavarJavaR 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)"

の結果をR.Version()質問に貼り付けていただけますか?rJavaあなたの質問にあなたが説明する正確な方法を使用して、64ビット版をインストールしました。私の推測では、Rのバージョンは32ビットです。
Andrie

plsは、それをどのように解決したかをansで共有します。
bigData 2013年

1
コメントをここに追加すると、ソリューションリスト全体を確認するのに役立ちます。上記のエラーが発生した場合は、JavaがProgram Filesまたはにあるかどうかを確認してくださいProgram Files (x86)。受け入れられた答えが言うようにウィンドウへのパスを追加します。もしそうならProgram Files (x86)、それはあなたが32ビットバージョンを持っていることを意味し、リンクsites.google.com/site/rforfishandwildlifegrads/home/week_2/…に従ってください。
Divi 2016

回答:


154

アップデート(2018年7月):

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

  • 32ビットRでrJavaを使用するには、Windows x86用のJavaが必要です
  • 64ビットRでrJavaを使用するには、Windows x64用のJavaが必要です
  • multi-arch(デフォルト)でRパッケージをビルドまたはチェックするには、 Java for Windows x64Java for Windows x86の両方インストールする必要があります 。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「ホーム」ディレクトリにあるはずです。

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


4
2番目の引数を空白のままにするのではなく、単に行うことができますinstall.packages('rJava', repos='http://www.rforge.net/')
ケンウィリアムズ

2
@ user2161065の回答で指摘されているように、rJavaをロードするには、JAVA_HOME変数を削除する必要があります
David LeBauer 2013年

1
このすべては、@ user2161065により示唆されるように、私は未設定JAVA_HOMEに持っていたとしてもこれをやった後、必要になるかもしれないが
ajkl

3
+1 ...\jre\bin\serverパスに追加すると修正されました
mchen 2014

6
この「Windows PATH」変数はどこにありますか?
Shreyes

114

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)

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


20
以前の解決策は、JAVA_HOMEを取り除くまで機能しませんでした。これが鍵です。
bshor 2013年

15
このJAVA_HOMEの問題は、バグとしてrJavaに報告する必要があります。
見習いキュー2013年

2
これは本当に私にとってはトリックでした:if(Sys.getenv( "JAVA_HOME")!= "")Sys.setenv(JAVA_HOME = "")ライブラリ(rJava)ありがとう@ user2161065
ajkl

JAVA_HOME変数を削除するスクリプトを追加するとうまくいきました!
リチャード

1
このソリューションは、rJavaに依存するXLConnectやXLConnectJarsなどのパッケージでも機能します。(私がこの明白なコメントを書いているのは、検索エンジンが私が見つけた問題よりも簡単にこのページにアクセスできるようにするためです。)
Tripartio

31

私にとっては、JAVA_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)

2
JAVA_HOME env変数のオーバーライドとRでの設定で+1
carnust

私のJAVA_HOMEはJDKフォルダーに設定され(私もJava開発を行っているので)、rJavaにはありませんでした。うまく機能しているJava開発環境を台無しにしたくないので、最後の修正(オプション)を使用しました。ありがとう!
chaslewis 2014

1
options(java.home="my\\path\\to\\jre")環境PATHの設定を含め、他のすべてが失敗したときに動作しました
Daniel Krizian

これは私のために働きました:options(java.home="C:\\Program Files\\Java\\jdk1.8.0_144\\jre")。jdk1.8を使用している場合。
saubhik 2017

Adopt Open JDKを使用して、その最後の提案がうまくいきました。他のすべての一般的なソリューションは失敗しました。
Ola Caster

7

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

> .Machine$sizeof.pointer
[1] 8

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

編集:パッケージにバイナリがある場合、それらは別々のディレクトリにあります。詳細はOSによって異なります。LoadLibraryエラーが発生したのは...rJava/libs/x64/... 、MacOSシステムでは... rJava / libs / ... `フォルダーにi386、ppc、x86_64の3つのサブディレクトリがあるため、dllが見つからなかったためです。(ppcファイルは明らかに役に立たない手荷物です。)


私のRStudioインストールは64ビットRをポイントしていました。32ビットに変更すると、rJavaパッケージをインポートできました。それが起こっていることの正反対であるように見えるので、私はエラーメッセージについて私がとても混乱している理由です。
djq

4

ネクロでごめんなさい。私も同じ問題にrJava遭遇JAVA_HOMEし、JREを指すと予想されることがわかりました。JDKがインストールされている場合は、おそらくJAVA_HOMEJDKを指します。私の簡単な解決策:

Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="\\"))

3

以前の回答が正確に機能しないため、この問題が発生したときにインストールされたJavaパッケージを特定するのに問題がありました。整理するには、次のように入力しました。

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

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

Jre7は私の問題を解決しませんでしたが、jre1.8.0_31 /は解決しました。最終的な回答が実行されていました(ライブラリ(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

rJavaに関連する問題がありました。読み込まれますが、それに依存するパッケージは読み込まれません。

ユーザーがjvm.dllとPATHおよびJAVA_HOMEで多くの時間を浪費する可能性があるのは、実際の修正がインストーラーに強制的にi386を忘れさせることである場合です。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%"

0

私のブラウザーでは32ビットのJREが必要ですが、RおよびrJavaでは64ビットのJREが必要です。32ビットJREはデフォルトの場所にインストールされます。いくつかの実験の後、私はrJava(バージョン0.9-6)を動作させるために、ミスタービーの提案の1つだけが必要であることがわかりました。私が行ったのは、64ビットJavaインストールへのパスを追加することだけです。

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

パス環境変数(パスは異なる場合が多い)の先頭に移動し、user2161065の提案に従って、JAVA_HOMEを削除します。これをエントリーのすぐ前に置きます

C:\ProgramData\Oracle\Java\javapath

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


0

これはアップデートだと思います。Javacが見つからずjavacがWindowsコマンドプロンプトで機能しないため、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によれば、 rJavaの現在のバージョン(0.9-7発行2015-Jul-29)

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

つまり、rJavaがjavacを検出できないためにインストールされず、JREがインストールされている場合は、JDKを試してください。また、JAVA_HOMEJREではなくJDK を指していることを確認してください。


これは基本的に@friendzisの発言とは逆になっています。
woodvi

rJava開発者はこの問題を明確にすることができますか、pls
userJT

0

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


0

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

  • @Jeroenによる更新(2018年7月)ごとにjdksをデフォルトの場所にインストールします。
  • 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
  1. Javaをhttps://java.com/en/download/windows-64bit.jsp for 64-bit windows \ Install it からダウンロードします
  2. Java開発キットをhttps://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlからダウンロードして、64ビットWindows用にインストールしてください \インストールしてください
  3. 次に、desktop \ Properties \ Advanced system settings \ Advanced \ Environment Variables \ Under System variablesでPath \ Click Edit \ Click on New \ Copy and paste path“ 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. [環境変数]ウィンドウで、[ユーザー]の[ユーザー変数]に移動し、[新規]をクリックします\ PUT変数名を「JAVA_HOME」、変数値を「C:\ Program Files \ Java \ jdk1.8.0_201 \ bin」\ [OK]をクリックします

インストールをチェックするには、CMD \ Type javac \ Press Enterを開き、java \ press enterと入力します。表示されます ここに画像の説明を入力してください

RStudioで実行

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.