При использовании внешних пакетов в приложении Java нужно ли включать их полностью в JAR? - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь использовать Rjava в своем приложении Java, для которого требуется установить R на компьютере.

Приложение хорошо работает при запуске в IDE (IntelliJ IDEA), но когда я упаковываю его в файл JAR и запускаю его с помощью java -jar myfile.jar, я получаю следующую ошибку:

R_HOME is not set. Please set all required environment variables before running this program.
Unable to start R
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f847c3a470c, pid=4232, tid=4233
#
# JRE version: OpenJDK Runtime Environment (10.0.2+13) (build 10.0.2+13)
# Java VM: OpenJDK 64-Bit Server VM (10.0.2+13, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# C  [libR.so+0x17270c]
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" (or dumping to /home/xvlaze/IdeaProjects/Ypsilon/out/artifacts/Ypsilon/core.4232)
#
# An error report file with more information is saved as:
# /home/xvlaze/IdeaProjects/Ypsilon/out/artifacts/Ypsilon/hs_err_pid4232.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Aborted (core dumped)

Конечно, это происходит потому, что я не установил $ R_HOME в качестве переменной среды в артефакте IDEA (и я не знаю, как это сделать, также). $ R_HOME указывает на /usr/lib64/R в переменных моего проекта, но JAR, похоже, не видит его.

Теперь возникает вопрос: мне включить содержание /usr/lib64/R в мой JAR-файл, чтобы он работал, или есть другой способ, которого я не знаю?

1 Ответ

1 голос
/ 31 марта 2019

Вы должны установить переменную env с помощью команды

export R_HOME=/usr/lib64/R

Эта команда основана на сеансе.Так что если вы хотите иметь эту переменную env в любое время, вы должны установить ее в файле ~ / .bashrc.Вы должны открыть этот файл для редактирования и установить в конец этого файла команду

export R_HOME=/usr/lib64/R

Для получения дополнительной информации о переменных env см. https://codeburst.io/linux-environment-variables-53cea0245dc9

Также, https://askubuntu.com/questions/58814/how-do-i-add-environment-variables

...