Запуск приложения SpringBoot из IntelliJ IDEA не выполняется для модульного проекта - PullRequest
1 голос
/ 11 марта 2020

Мой проект представляет собой приложение SpringBoot, которое содержит один модуль java. Этот модуль не open ни один из его пакетов.

module-info. java

module my.somewhere
{ 
    requires spring.core;
    requires spring.context;
    requires spring.boot;
    // and so on
}

Приложение запускается, как и ожидалось, при вызове из командной строки mvn clean spring-boot:run.

Но когда я пытаюсь запустить его из основного метода SpringBootApplication, в консоли появляется следующая ошибка: java.lang.IllegalAccessException: module my.somewhere does not open my.somewhere.abc to module spring.core (см. Подробный стек ниже).

Это выглядит Разумно иметь что-то открытое в Spring из-за операций отражения, но мне интересно, почему maven удается запустить его без проблем.

Пожалуйста, помогите мне понять, как заставить приложение работать аналогично из Maven 3.6.1 и из IntelliJ IDEA 2019.3.


Подробный стек:

org.springframework.cglib.core.CodeGenerationException: java.lang.IllegalAccessException-->module my.somewhere does not open my.somewhere.abc to module spring.core
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:514) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:363) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:110) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:108) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) ~[spring-core-5.2.4.RELEASE.jar:na]
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:134) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:319) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:569) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:416) ~[spring-core-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:137) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:423) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:257) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:286) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:130) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:706) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.context@5.2.4.RELEASE/org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532) ~[spring-context-5.2.4.RELEASE.jar:na]
    at spring.boot@2.2.5.RELEASE/org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[spring-boot-2.2.5.RELEASE.jar:na]
    at spring.boot@2.2.5.RELEASE/org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.5.RELEASE.jar:na]
    at spring.boot@2.2.5.RELEASE/org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.5.RELEASE.jar:na]
    at spring.boot@2.2.5.RELEASE/org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.5.RELEASE.jar:na]
    at spring.boot@2.2.5.RELEASE/org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.5.RELEASE.jar:na]
    at spring.boot@2.2.5.RELEASE/org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.5.RELEASE.jar:na]
    at my.somewhere@0.0.2/my.somewhere.MyApplication.main(MyApplication.java:11) ~[classes/:na]
Caused by: java.lang.IllegalAccessException: module my.somewhere does not open my.somewhere.abc to module spring.core
    at java.base/java.lang.invoke.MethodHandles.privateLookupIn(MethodHandles.java:202) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:508) ~[spring-core-5.2.4.RELEASE.jar:na]
    ... 27 common frames omitted

1 Ответ

0 голосов
/ 11 марта 2020

Потому что, если вы запускаете его с mvn clean spring-boot:run, все ваши классы и JAR-файлы находятся в пути к классам, а не в пути к модулю.

Таким образом, при запуске его с подключаемым модулем maven или в качестве исполняемого файла система модулей отсутствует. JAR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...