Re[2]: add-opens for dynamically created layers
Alex Orlov
ooo_saturn7 at mail.ru
Mon Nov 16 21:07:19 UTC 2020
Hello Alan,
Thank you very much for your help. With ModuleLayer.Controller I solved the problem.
Do I understand it correctly — it is impossible to get reference to boot layer controller,
isn’t it?
--
Best regards, Alex Orlov
>Понедельник, 16 ноября 2020, 22:27 +03:00 от Alan Bateman <alan.bateman at oracle.com>:
>
>On 16/11/2020 18:35, Alex Orlov wrote:
>> :
>>
>> When I start my application I get:
>>
>> java.lang.IllegalAccessError: class org.springframework.core.log.CompositeLog (in module spring.core) cannot access class org.apache.commons.logging.impl.NoOpLog (in module org.apache.commons.logging) because module org.apache.commons.logging does not export org.apache.commons.logging.impl to module spring.core.
>>
>> To fix it, I wanted in the Framework dynamically addOpens to module (module.addOpens(...)), however, I got
>>
>> Caused by: java.lang.IllegalCallerException: org.apache.commons.logging.impl is not open to module fw.module.
>>
>> To fix it I added jvm argument:
>>
>> --add-opens org.apache.commons.logging/org.apache.commons.logging.impl=fw.module \
>>
>> However, it didn’t help. It seems to me that jvm arguments add-opens works only when the module that must open
>> its package is in boot layer, but in my situation fw.module that is in boot layer knows nothing about web application modules. The static defineModulesXXXX methods return a ModuleLayer.Controller
>that can be used to export or open any package of any module in the
>layer to any other module. It's the equivalent of using the
>--add-exports or --add-opens on the command line to export or open
>packages of modules in the boot layer. So in this case you should be
>able to use the ModuleLayer.Controller for (I assume) the "Web
>Application Layer" to export
>org.apache.commons.logging/org.apache.commons.logging.impl to
>spring.core. That can be a workaround using spring.core and
>org.apache.commons.logging agree sort out their differences on whether
>org.apache.commons.logging.impl is part of the supported API or not.
>
>-Alan.
More information about the jigsaw-dev
mailing list