3

I am trying to connect java with R using Rserve

Java: 1.8.0_151
R: 3.5.0
OS: Mac 10.13.4 HighSierra

To connect R with Java, I typed the following on RStudio

install.packages("Rserve")
library(Rserve)
Rserve(args="--no-save")

things went smooth and I was so happy about it.

Then I jumped back to Java (Java Eclipse so to speak) and continued typing. Here is what I've done on Eclipse

package rserve;

import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.REngineException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;

public class WordCloud1 {
    public static void main(String[] args) throws REngineException, 
REXPMismatchException {
    RConnection c = new RConnection();
    String path = "/Users/JinhoShin/Desktop/study/R/r_temp2";
    String file = "seoul_new.txt";
    c.parseAndEval("library(KoNLP)");
    c.parseAndEval("useSejongDic()");
    c.parseAndEval("library(wordcloud)");
    c.parseAndEval("library(RColorBrewer)");
    c.parseAndEval("setwd('" + path + "')");
    c.parseAndEval("data1=readLines('" + file + "')");
    c.parseAndEval("data2 = sapply(data1,extractNoun,USE.NAMES=F)");
    c.parseAndEval("data3 = unlist(data2)");
    c.parseAndEval("data3=gsub('seoul','',data3)");
    c.parseAndEval("data3=gsub('request','',data3)");
    c.parseAndEval("data3=gsub('place','',data3)");
    c.parseAndEval("data3=gsub('transportation','',data3)");
    c.parseAndEval("data3=gsub(' ','',data3)");
    c.parseAndEval("data3=gsub('-','',data3)");
    c.parseAndEval("data3=gsub('OO','',data3)");
    c.parseAndEval("write(unlist(data3),'seoul_2.txt')");
    c.parseAndEval("data4 = read.table('seoul_2.txt')"); ########this is what blows me up
    c.parseAndEval("wordcount=table(data4)");
    c.parseAndEval("palete = brewer.pal(9,'Set3')");
    c.parseAndEval(
            "wordcloud(names(wordcount),freq = wordcount,scale=c(5,1),rot.per=0.25, min.freq = 1," + 
            " random.order=F, random.color = T, colors=palete)");
    c.parseAndEval("savePlot('0517seoul.png', type = 'png')");
    c.parseAndEval("dev.off()");
    c.close();
}
}

as you notice from the code

 c.parseAndEval("data4 = read.table('seoul_2.txt')"); => at rserve.WordCloud1.main(WordCloud1.java:30)

I have no idea why it can't read my text file despite the fact that it could write that file.

This is what Java Eclipse console keeps showing me

Exception in thread "main" org.rosuda.REngine.REngineException: eval failed
    at org.rosuda.REngine.Rserve.RConnection.parseAndEval(RConnection.java:499)
    at org.rosuda.REngine.REngine.parseAndEval(REngine.java:108)
    at rserve.WordCloud1.main(WordCloud1.java:30)
Caused by: org.rosuda.REngine.Rserve.RserveException: eval failed
    at org.rosuda.REngine.Rserve.RConnection.eval(RConnection.java:261)
    at org.rosuda.REngine.Rserve.RConnection.parseAndEval(RConnection.java:497)
    ... 2 more

and this is what RStudio keeps showing me

Error: long vectors not supported yet: qap_encode.c:36
Fatal error: unable to initialize the JIT

I tried everything I could do to resolve this issue, but still I am on the same spot.

halfer
  • 19,824
  • 17
  • 99
  • 186
KingJinho
  • 683
  • 1
  • 6
  • 23
  • FYI: it didn`t cause any problem when i did this solely on Rstudio.and i tried to change encoding things as well – KingJinho May 30 '18 at 11:42
  • Possibly related https://github.com/s-u/Rserve/issues/79 – Ralf Stubner May 30 '18 at 14:21
  • 3
    for those who have a same issue, try to read https://stackoverflow.com/questions/50410289/running-r-script-from-java-rconnection-eval-exception/50622263#50622263 – KingJinho Jun 12 '18 at 05:26

0 Answers0