У меня есть файл .bat
на сценарии Windows/shell в Linux, который запускает большое приложение Java из командной строки. Он настраивает путь к классам, переменные среды и т. Д.Параметры командной строки, работающие в Windows, но не Linux
В какой-то момент он использует RMID для настройки множества сервисов, которые будут запускаться в их собственных JVM. Проблема в том, что он не позволит мне указать несколько JAR для свойства codebase в Linux. Это позволяет мне делать это на Windows просто отлично, но я думаю, что мой синтаксис/стиль не должен быть неправильным для сценария .sh
, и я надеюсь, что более опытный пользователь Linux может получить подсказку. В Windows, рабочая линия выглядит следующим образом:
SET RMID_OPTIONS=%RMID_VM%
-J-DINSTALL_DIR=%CONFIG_PATH%
-C-DINSTALL_DIR=%CONFIG_PATH%
-J-DINSTALL_DIR_LOCAL=%HOME_DIR%
-C-DINSTALL_DIR_LOCAL=%HOME_DIR%
-J-Djava.security.policy=%PL_HOME%\windows\system.policy
-C-Djava.rmi.server.codebase=
"file:/%HOME_DIR%\jar1.jar file:/%HOME_DIR%\jar2.jar"
-J-Djava.rmi.server.codebase=
"file:/%HOME_DIR%\jar1.jar file:/%HOME_DIR%\jar2.jar"
// more stuff here
Единственные важные линии являются те, задающими rmi.server.codebase
свойства. Вышеупомянутое работает на 100% штрафа, однако при попытке установить несколько JAR в базе кода в Linux это приводит к общему сбою, и вся команда RMID не выполняется. Мой сценарий оболочки выглядит следующим образом:
export RMID_OPTIONS="${RMID_VM}
-J-DINSTALL_DIR=${CONFIG_PATH}
-C-DINSTALL_DIR=${CONFIG_PATH}
-J-DINSTALL_DIR_LOCAL=${HOME_DIR}
-C-DINSTALL_DIR_LOCAL=${HOME_DIR}
-J-Djava.security.policy=${PL_HOME}/linux/system.policy
-C-Djava.rmi.server.codebase=
""file:/${HOME_DIR}/jar1.jar file:/${PL_HOME_LOCAL}/jar2.jar""
-J-Djava.rmi.server.codebase=
""file:/${HOME_DIR}/jar1.jar file:/${PL_HOME_LOCAL}/jar2.jar""
// more stuff here
"
Сама оболочка скрипт работает прекрасно, если указан только один JAR, но больше, и я получаю общую неудачу. Любые предложения о том, что я делаю неправильно? Я открыт, чтобы попробовать новые вещи, чтобы исправить это, поскольку все мои попытки до сих пор были бесплодны.
Определите общий сбой. И почему двойные двойные кавычки? И почему все варианты RMId? Вы указываете те, когда регистрируете активируемые объекты, бот при его запуске. – EJP
По общему отказу я имею в виду, что активируемые объекты не регистрируются и, следовательно, не могут запускаться. Двойные кавычки - это соглашение Linux, которое интерпретирует только специальные символы, когда они определяют переменные, как описано здесь (http://www.serverwatch.com/tutorials/article.php/3898896/Single-vs-Double-Quotes-in-Bash .htm). Я недостаточно знаком с Linux, чтобы узнать, не подходят ли они в этом сценарии. Я был бы открыт для изменения, если вы считаете, что это может быть проблемой. Конкретная ошибка, которую я получаю, это 'rmid: незаконный вариант: file: // home/jar2.jar' (Извините, я думал, что я поставил выше) – Kon
« Общие »ничего не значит. «Сбой» означает сообщение об исключении или ошибке. Вы должны разместить его здесь, в своем вопросе. – EJP