Как заставить переменные окружения работать в файле JAR? - PullRequest
0 голосов
/ 31 марта 2019

Я борюсь за то, чтобы RJava работал в моей Java-программе, так как кажется, что это зависит от всего дерева каталогов R.Это дерево каталогов называется $ R_HOME в системе и, конфигурируя переменные среды проекта, оно указывает на /usr/lib64/R.

. Это работает нормально, когда я запускаю свое приложение в своей IDE (IntelliJ IDEA), но всякий раз, когдаЯ пытаюсь упаковать свой код в JAR и запустить его, используя java -jar xxx.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)

Это сообщение было тем, которое я получал в IDE, когда переменная среды R_HOME былане установлен.Кажется, либо JAR-файл не может прочитать какие-либо переменные среды, либо мне нужно сообщить проекту, что он должен включать в себя что-то, чего я не знаю.

Хотя я болею за первый вариант, возможно, ячто-то упустил, поскольку я относительно новичок в Java.

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Запустите ваше приложение с аргументом -D:

java -DR_HOME="/path/to/some-dir" -jar xxx.jar

Кавычки важны, если R_HOME содержит пробелы или минусы.

0 голосов
/ 31 марта 2019

Самое простое решение - запустить его как: R_HOME=/usr/lib64/R java -jar xxx.jar

Это установит переменную окружения с именем R_HOME для выполнения вашего jar

...