Столкнувшись сообщение о java.lang.UnsupportedClassVersionError: edu/stanford/nlp/pipeline/StanfordCoreNLP : Unsupported major.minor version 52.0
ошибке:
Вы должны
- установить Java 8, (как суперпользователь),
- изменения JVM по умолчанию операционная система использует для этой виртуальной машины Java (* см. ниже),
- запустить
R CMD javareconf
в командной строке, а затем
- установить env переменную глажения LD_LIBRARY_PATH в каталог, где хранится libjvm.so.
- рестарт R/RStudio
Я использую Ubuntu, моя ява 8 libjvm.so здесь: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
Вы можете сделать это в вашем .Rprofile файле.Добавьте эту строку, возможно, в нижней части файла:
Sys.setenv(LD_LIBRARY_PATH=paste0(Sys.getenv("LD_LIBRARY_PATH"), ":", "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/"))
Когда я делаю это в R:
R> Sys.getenv("LD_LIBRARY_PATH")
[1] "/usr/local/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/"
R> library(coreNLP)
R> initCoreNLP()
Я получаю этот результат:
Searching for resource: config.properties
Adding annotator tokenize
TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer.
Adding annotator ssplit
Adding annotator pos
Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [1.1 sec].
Adding annotator lemma
Adding annotator ner
Loading classifier from edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz ... done [5.6 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz ... done [2.1 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz ... done [3.8 sec].
Initializing JollyDayHoliday for SUTime from classpath: edu/stanford/nlp/models/sutime/jollyday/Holidays_sutime.xml as sutime.binder.1.
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/defs.sutime.txt
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/english.sutime.txt
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/english.holidays.sutime.txt
Adding annotator parse
Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... done [0.6 sec].
Adding annotator dcoref
Adding annotator sentiment
R> example(getSentiment)
gtSntmR> getSentiment(annoEtranger)
id sentimentValue sentiment
1 1 1 Negative
2 2 2 Neutral
gtSntmR> getSentiment(annoHp)
id sentimentValue sentiment
1 1 4 Verypositive
(*) Как увидеть jvm по умолчанию для Linux:
update-alternatives --display java
Результат
java - auto mode
link currently points to /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Показать все доступные альтернативы, используйте
update-alternatives --list java
Результат (на моей машине):
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Изменить альтернативы:
update-alternatives --set /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Просто поиграйте с альтернативами обновления.
Я попытался установить путь к /usr/lib/jvm...but, но я не могу найти папку jvm. У меня уже есть java 8 на моем компьютере – Lucia
попробуйте команды оболочки 'updatedb; найдите libjvm.so', если необходимо, установите его из репозитория ubuntu. – knb