Список модулей, решенных во время запуска приложения

Как узнать список модулей, которые были разрешены во время запуска приложения, чтобы выяснить, какие все поставщики услуг доступны из корневого модуля.

1 ответ

Решение

Разрешение модуля

Разрешение модуля состоит из двух этапов.

  • Первый шаг рекурсивно перечисляет директивы require набора корневых модулей.
  • Если все перечисленные модули являются наблюдаемыми, то на втором этапе вычисляется график их читабельности. График читаемости показывает, как модули зависят друг от друга, что в свою очередь контролирует доступ через границы модуля.

Можно использовать флаг отладки, как указано в java документация по инструменту с помощью аргумента VM:

--show-module-resolution

Показывает разрешение модуля вывода при запуске.

Например, опция будет перечислять:

  • корневой модуль
  • все модули, необходимые и разрешенные корневым модулем
  • дополнительные привязки, используемые вышеуказанными необходимыми модулями и
  • последовательные модули разрешены во время запуска

При запуске следующей команды:

Jigsaw git:(master) ✗ ../jdk-9.0.1.jdk/Contents/Home/bin/java 
                       --show-module-resolution 
                       -p ../out/production/100DaysOfJava9 
                       -m HundredDaysOfJavaNine/com.stackru.nullpointer.Challenge1

Это приводит к следующему:

root HundredDaysOfJavaNine file:///.../out/production/100DaysOfJava9/

HundredDaysOfJavaNine requires jdk.incubator.httpclient jrt:/jdk.incubator.httpclient

java.base binds jdk.localedata jrt:/jdk.localedata
java.base binds java.security.jgss jrt:/java.security.jgss
java.base binds java.logging jrt:/java.logging
java.base binds jdk.javadoc jrt:/jdk.javadoc
java.base binds jdk.jartool jrt:/jdk.jartool
java.base binds jdk.jlink jrt:/jdk.jlink
java.base binds jdk.compiler jrt:/jdk.compiler
java.base binds jdk.jdeps jrt:/jdk.jdeps
java.base binds java.desktop jrt:/java.desktop
java.base binds jdk.zipfs jrt:/jdk.zipfs
...
Другие вопросы по тегам