Что делает флаг dynamic.classpath? (Настройки проекта IntelliJ) - PullRequest
33 голосов
/ 31 января 2011

В файле .idea / workspace.xml можно найти следующее:

<component name="PropertiesComponent">
  ...
  <property name="dynamic.classpath" value="false" />
</component>

Для чего нужен флаг dynamic.classpath?

Установка его в true оказывается обходным решением для ошибки IntelliJ.Но мне также любопытно, есть ли у него побочные эффекты.

Ответы [ 2 ]

38 голосов
/ 31 января 2011

Эта опция управляет тем, как classpath передается в JVM: через командную строку или через файл.Большинство операционных систем имеют максимальный предел командной строки, при превышении которого IDEA не сможет запустить ваше приложение.

Если длина командной строки превышает 32768 символов, IDEA предлагает переключиться на динамический путь к классам.Длинный путь к классу записывается в файл, затем читается средством запуска приложений и загружается через системный загрузчик классов.

Если вас интересуют подробности реализации, вы можете проверить исходный код редакции сообщества IDEA, JdkUtil.java файл, setupJVMCommandLine метод.

23 голосов
/ 08 апреля 2011

Побочным эффектом IntelliJ 9.0.4 является то, что после включения опции путь к классу больше не завершается.

В моем случае опция была включена после того, как я выбрал " yes"в диалоге ошибки при запуске всех модульных тестов в определенном пакете.Сообщение об ошибке гласит: « Слишком длинная командная строка. Чтобы уменьшить ее длину, можно использовать файл classpath. Вы хотите включить режим файла classpath для всех конфигураций запуска вашего проекта?"

После этого некоторые тесты не прошли, потому что необходимые классы из других модулей отсутствовали в пути к классам.

Я не нашел диалогового окна, где я мог бы переключить его обратно.Мне пришлось отредактировать файл .iws вручную и переключить параметр dynamic.classpath обратно на « false ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...