Wybór języka

Illegal access w Javie 16, znany również jako <<Coś zabija mój program!>>

Na górze róże

Na dole bez

illegal access

Dopadnie cię też!

Jako programiście/programistce Javy (jeśli choć raz udało Ci się wyjść poza strefę komfortu Javy 8) mogło Ci się tak przytrafić, że Twym oczom (w logu albo w konsoli) ukazało się poniższe ostrzeżenie:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.przybyl.ddj16.stronglyEncapsulatedInternals.StronglyEncapsulatedInternals to field java.lang.String.value
WARNING: Please consider reporting this to the maintainers of org.przybyl.ddj16.stronglyEncapsulatedInternals.StronglyEncapsulatedInternals
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
You shall not use

Od wydania Javy 9 wiele zostało powiedziane i napisane o projekcie Jigsaw, który nie tylko zmodularyzował samo JDK (nie ma rt.jar!), ale także przyniósł nam koncepcję illegal access (nielegalny dostęp). W jednym z moich wykładów Java. Migrating to 11 in real app wyjaśniam, o co w tym chodzi, a ten wpis zacznijmy od szybkiej powtórki (bo nie musiałeś/musiałaś go przecież widzieć).

Niestety, tłumacz wziął wolne. Wpis dostępny po angielsku.

Wybór języka