Java 无法在R中初始化CoreNLP

Java 无法在R中初始化CoreNLP,java,r,stanford-nlp,rjava,Java,R,Stanford Nlp,Rjava,在运行高速的Mac上,我无法访问R中的coreNLP。我不确定问题出在哪里,但似乎每次我再次尝试让coreNLP工作时,都会遇到不同的错误。我有JDK9.0.4。请参阅下面的代码,了解我正在尝试执行的操作,以及阻止我的错误 在我之前的尝试中,我能够让initCoreNLP()运行并加载包中的一些元素,但在其他元素上会失败。然后,当我尝试运行annotateString()时,它会抛出错误错误必须用“int CoreNLP”初始化 我已经多次下载并重新下载了coreNLPJava归档文件,但仍然没

在运行高速的Mac上,我无法访问R中的
coreNLP
。我不确定问题出在哪里,但似乎每次我再次尝试让
coreNLP
工作时,都会遇到不同的错误。我有JDK9.0.4。请参阅下面的代码,了解我正在尝试执行的操作,以及阻止我的错误

在我之前的尝试中,我能够让
initCoreNLP()
运行并加载包中的一些元素,但在其他元素上会失败。然后,当我尝试运行
annotateString()
时,它会抛出错误
错误必须用“int CoreNLP”初始化

我已经多次下载并重新下载了
coreNLP
Java归档文件,但仍然没有成功!有关我的
coreNLP
R软件包文件夹的内容,请参见图片,该文件夹位于
/Library/Frameworks/R.framework/Versions/3.4/Resources/Library/coreNLP

您知道如何成功初始化
coreNLP

dyn.load("/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/server/libjvm.dylib")

library(NLP)
library(coreNLP)

> downloadCoreNLP()
trying URL 'http://nlp.stanford.edu/software//stanford-corenlp-full-2015-12-09.zip'
Content type 'application/zip' length 403157240 bytes (384.5 MB)
==================================================
downloaded 384.5 MB

> initCoreNLP()
[main] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Searching for resource: StanfordCoreNLP.properties
Error in rJava::.jnew("edu.stanford.nlp.pipeline.StanfordCoreNLP", basename(path)) : 
  edu.stanford.nlp.io.RuntimeIOException: ERROR: cannot find properties file "StanfordCoreNLP.properties" in the classpath!
根据我们的讨论

我的感觉是Java/R配置依赖性问题。因此,
rJava
似乎取决于所使用的
java
版本,
coreNLP
取决于
rJava

java <- rJava <- coreNLP

java请参见下面的堆栈溢出答案。这对我有用。谢谢你的回复。我对必要的Java版本感到困惑。我在Mac电脑上,所以我相信我的解决方案和那个答案有点不同,但我可能错了。我有
jdk-9.0.4.jdk
jdk1.8.0_162.jdk
。答案是说要有Java8。当我从下载Java8时,它失败了,因为我有一个更为更新的Java版本(Java9)。“Java1.8”已经是“Java8”了吗?谢谢你的帮助。我很困惑,因为我对Java一无所知,但需要它来工作!1.8是Java 8吗?是的,下面的问题是,你知道
libjvm在哪里吗?我无法完全理解答案,因为我无法遵循Ubuntu路径
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
。遵循您的代码,当我运行
initCoreNLP()
时,它会在rJava::.jnew(“edu.stanford.nlp.pipeline.stanfordcorep”,basename(path))中的这个错误处停止:edu.stanford.nlp.util.ReflectionLoading$ReflectionLoadingException:创建edu.stanford.nlp.time.TimeExpressionExtractorImpl时出错
我注意到您正在运行
9.0.1
。我对那些
system()
命令的输出分别是
javac9.0.4
java版本“9.0.4”java(TM)SE运行时环境(build9.0.4+11)java热点(TM)64位服务器VM(build9.0.4+11,混合模式)
。您会建议卸载9.0.4并安装9.0.1吗?还是不重要?我能够成功运行
example(gettouction)
,但当我尝试运行另一个函数,如
annotateString()
,我得到错误
必须使用'initCoreNLP'初始化。知道是什么原因吗?我从源代码重新安装了
rJava
,并尝试初始化
coreNLP
,得到的错误与以前相同!您是否建议完全卸载所有必要的元素并重试?coreNLP、rJava、devtools、java9.0.4等等。。。?我已经安装了devtools,但我没有xcode,我也不确定gcc或Fortrant是否正确。非常感谢。任何未来的解决方案寻求者的问题是在加载
rJava
之前使用
dyn.load()
指向正确的Java版本。因此,在脚本的顶部
dyn.load(…);图书馆(rJava);库(coreNLP)
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/jre/lib/server/libjvm.dylib')

remove.packages("rJava")
install.packages("rJava")

ipak <- function(pkg){
  new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
  if (length(new.pkg))
    install.packages(new.pkg, dependencies = TRUE)
  sapply(pkg, require, character.only = TRUE)
}

# usage
packages <- c("NLP", "coreNLP", "rJava")
ipak(packages)

.jinit()
.jcall("java/lang/System","S","getProperty","java.version")

# run the follwoing command once
# downloadCoreNLP() # <- Takes a while...

initCoreNLP()
example(getSentiment)
sIn <- "Mother died today. Or, maybe, yesterday; I can't be sure."
annoObj <- annotateString(sIn)