2016-03-07 50 views
1

我已经有一段时间阅读了关于此问题的文章,at githubstackoverflowRJDBC问题:.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. 

因此,任何帮助,将不胜感激:)

回答

0

我有

Error in .jfindClass(as.character(driverClass)[1]) : class not found 

同样的问题,但没有找到一种让它工作的方法。我用RPostgreSQL库来解决它,使用这个答案: https://stackoverflow.com/a/30855566/1686839

相关问题