我已經有一段時間閱讀了關於此問題的文章,at github和stackoverflow。RJDBC問題:.jfindClass(as.character(driverClass)[1])中的錯誤:未找到類
但是,我似乎找不到解決我的問題的正確方法。
這裏是什麼,我做的過程:
前一陣子,我開始使用Spark和我有一個Java相關的錯誤,其基於this post我做解決:
sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin
今天,我試圖用連接到我們的數據庫紅移:
redshift.drv <- JDBC('com.amazon.redshift.jdbc41.Driver',
'~/Amazon\ Redshift\ JDBC\ Driver/RedshiftJDBC41-1.1.10.1010.jar',
identifier.quote="'")
這引發以下錯誤:
Error in .jfindClass(as.character(driverClass)[1]) : class not found
基礎上,回答在github我運行:
$ R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 1.8.0_66
Java home path : /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Unable to locate an executable at "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javac" (-1)
Java compiler : not functional
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
System Java on OS X
trying to compile and link a JNI program
detected JNI cpp flags :
detected JNI linker flags :
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -DPLATFORM_PKGTYPE='"mac.binary.mavericks"' -fPIC -Wall -mtune=core2 -g -O2 -c conftest.c -o conftest.o
conftest.c:1:10: fatal error: 'jni.h' file not found
#include <jni.h>
^
1 error generated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program
JAVA_HOME : /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Java library path:
JNI cpp flags :
JNI linker flags :
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.
其第1位)拋出此conftest.c:1:10: fatal error: 'jni.h' file not found
錯誤和2)不是什麼[R看到的是一致的:
> J("java.lang.System")$getProperty("java.version")
[1] "1.6.0_65"
在這一階段我有「直覺」,我運行的命令可以使用Spark,因爲很明顯我沒有一個一致的環境。
因此,我的問題是:
有誰知道修復這個設置?東西,讓R看到1.8.0_66版本(找到'jni.h'
文件等)
我真的不需要重新做所有的Java安裝,我只是想有一個清潔,功能環境。
的情況下,是任何幫助,這個驅動程序完美的作品:
prod.drv <- JDBC('com.microsoft.sqlserver.jdbc.SQLServerDriver',
'~/sqljdbc_4.0/enu/sqljdbc4.jar',
identifier.quote="'")
謝謝!
編輯:
我說:
setenv JAVA_HOME `/usr/libexec/java_home -v 1.8`
我.tcshrc
文件並運行:
R CMD javareconf JAVA_CPPFLAGS=/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/include/jni.h
(如果我沒有通過JAVA_CPPFLAGS明確它不會找到它,像以前一樣獲得相同的錯誤)。
現在我得到以下錯誤:
Java interpreter : /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre/bin/java
Java version : 1.8.0_73
Java home path : /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home
Java compiler : /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/javac
Java headers gen.: /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/javah
Java archive tool: /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/jar
System Java on OS X
trying to compile and link a JNI program
detected JNI cpp flags: /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/include/jni.h
detected JNI linker flags : -framework JavaVM
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/include/jni.h -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -DPLATFORM_PKGTYPE='"mac.binary.mavericks"' -fPIC -Wall -mtune=core2 -g -O2 -c conftest.c -o conftest.o
clang: error: cannot specify -o when generating multiple output files
make: *** [conftest.o] Error 1
Unable to compile a JNI program
JAVA_HOME : /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home
Java library path:
JNI cpp flags :
JNI linker flags :
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.
因此,任何幫助,將不勝感激:)