Как передать параметры системного свойства в файл JAR? - PullRequest
0 голосов
/ 14 сентября 2018

Я написал небольшое приложение для анализа большого XML-файла, используя SAX с Intellij.

Я передаю опцию -DentityExpansionLimit=0 своему приложению, зайдя в Run \ Edit Configurations ... и устанавливаю опции VM.

Он отлично работает, когда я запускаю приложение с Intellij, но когда я создаю артефакт с Intellij, он не работает, и я получаю сообщение об ошибке, необходимое для установки этой опции. Это очевидно, что опция не прошла к созданному файлу jar.

Как мне достичь этой цели?

Есть ли какая-либо команда, которую я создаю с помощью командного файла или чего-то еще, чтобы установить эту опцию для моего пользователя? Есть ли какой-либо файл настроек, который я могу изменить, чтобы установить эту опцию для моей машины? (Я использую windows 10)

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Обычно для отправки системных свойств в jar команда выглядит примерно так:

java -DentityExpansionLimit=0 -jar thejar.jar
0 голосов
/ 14 сентября 2018

Здесь вы смешиваете две вещи:

  • команду командной строки JVM и тот факт, что вы можете передавать аргументы в ваше приложение или свойства самой JVM
  • артефакт вашего развертывания (возможно, файл JAR)

Значение: кажется, что вы хотите передать аргументы командной строки (какой-то основной функции) илисвойства для вашего приложения.Но JAR-файл не поддерживает это.

JAR-файлы являются просто контейнером файлов классов.Вы можете добавить некоторую информацию META через манифест (какой класс запустить), но это все.Вы не можете волшебным образом вставить ваши IntelliJ «настройки конфигурации времени выполнения» в JAR.

Другими словами: IntelliJ не может поместить эти значения в ваш JAR.Когда вы вызываете java -jar Your.jar ..., тогда вам (или другому инструменту) необходимо добавить необходимые значения в командную строку.

...