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)"
RJavaの最新のCRANバージョンは、PATH
またはjvm.dll
を手動で設定することなく、Java_HOME
を自動的に検出します。ただし、次のことに注意してください。
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 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にパッケージをプライマリライブラリディレクトリにインストールするように指示するだけです。何らかの理由で、値をデフォルトのままにしても、値を空白のままにすると機能しません。
RJavaを機能させるには、コンピューターの構成に大きく依存します。
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パッケージのインストールに失敗しました から設定解除するというアイデアを借りました。
私にとっては、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)
最後の質問には簡単な答えがあります。
> .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ファイルは明らかに無駄な荷物です。)
ネクロごめんなさい。私も同じ問題にぶつかり、rJava
がJava_HOME
がJREを指すことを期待していることがわかりました。 JDKがインストールされている場合、ほとんどの場合、Java_HOME
はJDKを指します。私の簡単な解決策:
Sys.setenv(Java_HOME=paste(Sys.getenv("Java_HOME"), "jre", sep="\\"))
この問題に遭遇したときにインストールされた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/")
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%"
これは、アップデート(2018年7月)のフォローアップです。 64ビットWindows 10を使用していますが、Rtoolsを使用して32ビットと64ビットの両方のソースからrパッケージをビルドするように設定されています。私の64ビットjdkはjdk-11.0.2です。できるときは、RStudioですべてを行います。 2019年3月現在、rjavaは<= jdk11でテストされています。 github issue#157 を参照してください。
Sys.setenv(Java_HOME="C:/Program Files/Java/jdk-11.0.2")
Sys.getenv("Java_HOME")
install.packages("rJava",,"http://rforge.net")
参考までに、rstudioスクリプティングコンソールはダブルコンマが好きではありません...しかしそれは動作します!
ブラウザには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が必要なものを見つけることができたように見えます。
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)
は完全に機能しました。
これはアップデートだと思います。 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を指していることを確認してください。
注:jdk1.8.0_201およびjre1.8.0_201は、Java開発キットとJavaのバージョンに応じて変更されます
インストールを確認するには、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パッケージを問題なくインストールしてロードできます。