Calm Hill My Random Thoughts

rJava on Mac OS X El Capitan

Compile လုပ်ရတဲ့ Language တွေနဲ့ ဘာဆိုဘာမှ မရေးဖြစ်တာ အတော်လေးကြာပါပြီ ဘာလို့မသုံးတယ်တော့ ရေရေရာရာတော့ မဟုတ်ပါဘူး အဓိကအချက်ကတော့ ပျင်းတာလို့ပဲပြောရမှာ အဲဒါနဲ့ လွယ်လွယ်ကူကူ Interactively သုံးလို့ရတဲ့ Language တွေပဲသုံးဖြစ်တော့တယ် ဒါပေမယ့်လည်း လိုအပ်လို့သုံးရတဲ့ အခြေအနေမျိုးလည်းရှိတာပေါ့ Text Mining တွေအတွက် သုံးဖို့လိုအပ်တော့ ကိုယ်တိုင်လည်း အစအဆုံးပြန်ရေးလို့ အချိန်အရမဖြစ်နိုင်တာနဲ့ Java နဲ့ရေးထားတဲ့ Weka ထဲက Library တွေ R ထဲကနေပြီး ယူသုံးဖို့ဖန်လာတော့ Java တွေက Setup ပြန်လုပ်ရတယ်။ RWeka အတွက် rJava ကို Install လုပ်တဲ့အခါ JNI တွေ မရှိပါဘူးဆိုပြီး R ထဲမှာ ပြဿနာတက်တယ်။

checking whether Java run-time works... yes
checking whether -Xrs is supported... yes
checking whether JNI programs can be compiled... configure: error: Cannot compile a simple JNI program. See config.log for details.

Make sure you have Java Development Kit installed and correctly registered in R.
If in doubt, re-run "R CMD javareconf" as root.

ERROR: configuration failed for package 'rJava'
* removing '/usr/local/lib/R/3.2/site-library/rJava'

Java Install လုပ်ထားတာတွေ သွားကြည့်တော့လည်း သူ့နေရာနဲ့သူ JNI တွေလည်း အားလုံးရှိနေတော့ နည်းနည်းစဉ်းစားရခက်တယ် R ကိုပဲ Java အတွက် Configure မလုပ်ရသေးလို့ ဖြစ်မယ်ဆိုပြီး R CMD javareconf ဆိုပြီးစမ်းကြည့်တော့လည်း Config က Fail ဖြစ်တယ် Error ကတော့ အတူတူပဲ JNI Headers တွေရှာလို့မတွေ့တဲ့ကိစ္စပဲ။ ဒါပေမယ့် Mavericks နဲ့ တခြားစက်တလုံးမှာ စမ်းကြည့်တော့ ဘာမှမဖြစ်ဘူး လွယ်လွယ်ကူကူ Build လုပ်လို့ရတယ်။ Java Setup လုပ်တုံးကပဲ ပြဿနာတက်ခဲ့လား OS ကွာလို့ပဲလားတော့ သိပ်မသေချာဘူး။

conftest.c:1:10: fatal error: 'jni.h' file not found
#include <jni.h>
.
.

'jni_md.h' file not found
#include "jni_md.h"

ဘယ်လိုမှရှင်းမရတော့ rJava ကို တစစီဖြုတ်ကြည့်တော့ JNI Headers တွေက CPPFLAGS မှာထည့်ပေးလို့ရတယ် ဘိုင်ကြံကြံပြီးတော့ ထည့်ပေးလိုက်တော့ rJava ကို Build လုပ်လို့ရသွားတယ်။ အရင်ဆုံးအနေနဲ့ သုံးချင်တဲ့ Java Version အတွက် JAVA_HOME ကို Set မလုပ်ရသေးရင် Set လုပ်ပါ ပြီးရင်တော့ JNI Headers တွေဟာ JAVA_HOME ထဲက include နဲ့ include/darwin အောက်မှရှိတယ် အဲဒါတွေကို JAVA_CPPFLAGS ထဲကိုထည့်ပေးလိုက်။ ပြီးရင်တော့ R CMD javareconf ကိုပြန်စမ်းကြည့်ရင် Success ဖြစ်လိမ့်မယ် အဲဒါဆိုရင် rJava ကို R ထဲကနေ ပြန်ပြီးတော့ Install လုပ်ရင်ရပါပြီ။

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export JAVA_CPPFLAGS=-I$JAVA_HOME/include\ -I$JAVA_HOME/include/darwin