1

私はしばらくの間、この問題についてgithubとここでstackoverflowを読んでいました。

しかし、私の問題に対する適切な修正が見つからないようです。

これが私がしたことのプロセスです:

少し前にSparkの使用を開始しましたが、Java関連のエラーが発生しました。この投稿に基づいて、次のようにして解決しました。

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin

今日、次を使用して Redshift データベースに接続しようとしています。

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.

だから、どんな助けでも大歓迎です:)

4

1 に答える 1

0

同じ問題がありました

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

そしてそれを機能させる方法を見つけることができませんでした。この回答を使用して、RPostgreSQL ライブラリを使用して解決しました: https://stackoverflow.com/a/30855566/1686839

于 2016-08-30T17:14:34.103 に答える