Я нахожусь в процессе обновления небольшого приложения spring boot с Java 8 на Java 11. В этом проекте используется пакет javax.smartcardio
. Я строю его с помощью maven.
То pom.xml
в основном содержит следующие зависимости/плагины:
- пружинная загрузка-стартер-родитель (2.5.6)
- пружинный загрузчик-стартер-тест
- пружинный загрузчик-стартер-веб
- пружинная загрузка-автоконфигурация
- галька-пружинный ботинок-2-стартер
- пружинная загрузка-стартер-безопасность
- пружинная загрузка-maven-плагин
- maven-ресурсы-плагин
- maven-сборка-плагин
- exec-maven-плагин
После обновления всех моих зависимостей и использования OpenJDK11 проект компилируется и работает нормально (mvn clean package
). Особенно части, использующие классы из javax.smartcardio
тоже отлично работает.
Однако Intellij выделяет весь мой импорт пакета javax.smartcardio.
в красном. Когда я нависаю над ним, он говорит мне Intellij - Package 'javax.smartcardio' is declared in module 'java.smartcardio', which is not in the module graph
. Intellij предлагает добавить этот модуль с помощью опций компилятора с --add-modules java.smartcardio
. При этом Intellij перестает выделять импорт.
Мой вопрос теперь в том, почему Intellij выделяет эти импортные данные, хотя, тем не менее, все компилируется и работает нормально? Что я упускаю? Важно ли добавлять этот модуль при компиляции? Может быть, maven уже делает что-то в этом отношении для меня? Если да, то на какую часть мне следует обратить внимание?
Я читал об использовании module-info.java
, но пришел к выводу, что использовать его для решения моей проблемы было бы не лучшим решением. Смотрите также Какие-либо планы для Java 9 Jigsaw (модуль) весенних проектов?