#java #linux #bash
#java #linux #bash
Вопрос:
Я хочу перейти -Dtangosol.coherence.wka=localhost
к параметрам JAVA.
Когда я пытался java -Dtangosol.coherence.wka=localhost -jar myapp.jar
, это работало. Флаг успешно передан в приложение.
Но я хочу использовать скрипт bash для установки флага в глобальную переменную JAVA, поэтому мне не нужно передавать флаг при каждом запуске приложения.
Я пытался:
export JAVA_OPTS="-Dtangosol.coherence.wka=localhost"
Но, похоже, это не работает. Я что-то пропустил?
Комментарии:
1. …тем не менее, JAVA_OPTS обычно выполняется сценариями оболочки, запускающими Java , а не самой JVM. Если вы еще не написали такой сценарий, вам не на что обращать на него внимание, так что нельзя ожидать, что он возымеет какой-либо эффект.
2. @CharlesDuffy Спасибо, я перепутал опции JVM и JAVA. На самом деле, параметр I, который я передавал, является параметром JVM. Есть ли способ настроить его через bash?
3. (Кроме того, это откровенно плохая практика; я не уверен, какой крупный проект OSS — может быть, Tomcat? — виноват в начале
JAVA_OPTS
тренда, но способ его использования означает, что таким образом может быть передано только очень ограниченное подмножество значений по причинам, описанным в BashFAQ # 50 … если только он не вызывается сeval
помощью , что создает новый / другой / дополнительный набор ошибок, некоторые из которых влияют на безопасность).4. Честно говоря, проще всего здесь просто создать собственную оболочку для вашего приложения. В качестве функции оболочки
myapp() { java -Dtangosol.coherence.wka=localhost -jar myapp.jar "$@"; }
будет созданаmyapp
команда, которая добавляет это значение в командную строку, а также передает все аргументы, предоставленные функции, в базовую команду. В качестве имени исполняемого файлаmyapp
вам потребуется всего две строки —#!/bin/sh
и затемjava -Dtangosol.coherence.wka=localhost -jar myapp.jar "$@"
— чтобы сделать то же самое.5. Это Helidon (проект микросервиса), запущенный в Docker. Первоначальная проблема заключается в том, что мне нужно передавать разные параметры JVM для разных сред (разработка, контроль качества и т. Д.). Файл docker не поддерживает условный оператор. Итак, я должен выполнить скрипт bash в DockerFile, чтобы определить правильную среду.. В сценарии bash я стремлюсь настроить некоторые глобальные параметры jvm в зависимости от среды.. @CharlesDuffy