簡體   English   中英

如何使環境變量在 JAR 文件中工作?

[英]How to make environment variables work in a JAR file?

我正在努力使 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)

該消息是我在未設置 R_HOME 環境變量時在 IDE 上收到的消息。 似乎 JAR 文件無法讀取任何環境變量,或者我需要告訴項目它必須包含我不知道的內容。

盡管我支持第一個選項,但由於我對 Java 比較陌生,因此我可能遺漏了一些東西。

最簡單的解決方案是將其運行為: R_HOME=/usr/lib64/R java -jar xxx.jar

這將為您的 jar 的執行設置一個名為R_HOME的環境變量

使用 -D 參數運行您的應用程序:

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

如果 R_HOME 包含空格或減號,引號很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM