Jestem w trakcie aktualizacji małej aplikacji spring boot z Java 8, Java 11. W projekcie zastosowano pakiet javax.smartcardio
. Buduję go za pomocą maven.
To pom.xml
w zasadzie zawiera następujące zależności/wtyczki:
- sprężynowa rozruch-rozrusznik-rodzic (2.5.6)
- sprężynowy downloader-starter-test
- sprężynowy downloader-rozrusznik-strony
- sprężynowa pobieranie-plug & play
- kamyczki-sprężynowy but-2-rozrusznik
- sprężynowa rozruch-rozrusznik-bezpieczeństwo
- sprężynowa pobieranie-maven-plugin
- maven-zasoby-plugin
- maven-montaż-plugin
- exec-maven-plugin
Po zaktualizowaniu wszystkich moich uzależnień i stosowania OpenJDK11 projekt jest skompilowany i działa normalnie (mvn clean package
). Szczególnie części, które także używają klasy z javax.smartcardio
też dobrze działa.
Jednak Intellij zaznacza cały mój importowanie pakietu javax.smartcardio.
w kolorze czerwonym. Kiedy нависаю nad nim, on mi mówi Intellij - Package 'javax.smartcardio' is declared in module 'java.smartcardio', which is not in the module graph
. Intellij oferuje dodać ten moduł za pomocą opcji kompilatora z --add-modules java.smartcardio
. Przy tym Intellij przestaje wydzielać import.
Moje pytanie teraz jest w tym, dlaczego Intellij podkreśla te importowane dane, choć nie mniej jednak wszystko jest skompilowany i działa normalnie? Co przeoczyłem? Ważne jest, czy dodać ten moduł przy kompilacji? Może być, maven już robi coś w związku z tym do mnie? Jeśli tak, to na jaką część należy zwrócić uwagę?
Czytałem o obsłudze module-info.java
ale doszedłem do wniosku, że go użyć do rozwiązania mojego problemu nie byłoby najlepszym rozwiązaniem. Zobacz także Jakie-albo plany Java 9 Jigsaw (moduł) wiosennych projektów?