Ошибки при запуске Spring Boot + JavaFX приложения
Подскажите пожалуйста. При запуске приложения получаю ошибку:
org.springframework.cglib.core.CodeGenerationException: java.lang.IllegalAccessException-->module testSBJFX does not open test.testsbjfx to unnamed module @6c939f49 at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:471) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:367) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:575) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.lambda$new$1(AbstractClassGenerator.java:103) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.core.internal.LoadingCache.lambda$createEntry$1(LoadingCache.java:52) ~[spring-core-6.0.7.jar:6.0.7] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na] at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:57) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:126) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:313) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:562) ~[spring-core-6.0.7.jar:6.0.7] at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:407) ~[spring-core-6.0.7.jar:6.0.7] at [email protected]/org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:138) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:514) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:304) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:358) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:150) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:747) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:565) ~[spring-context-6.0.7.jar:na] at [email protected]/org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.5.jar:na] at [email protected]/org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.5.jar:na] at [email protected]/org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.5.jar:na] at [email protected]/org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150) ~[spring-boot-3.0.5.jar:na] at testSBJFX/test.testsbjfx.TestClass.init(TestClass.java:16) ~[classes/:na] at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:825) ~[javafx-graphics-19.0.2.1-win.jar:na] at [email protected]/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) ~[javafx-graphics-19.0.2.1-win.jar:na] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] Caused by: java.lang.IllegalAccessException: module testSBJFX does not open test.testsbjfx to unnamed module @6c939f49 at java.base/java.lang.invoke.MethodHandles.privateLookupIn(MethodHandles.java:259) ~[na:na] at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:461) ~[spring-core-6.0.7.jar:6.0.7] ... 27 common frames omitted
Exception in Application init method Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1082) Caused by: java.lang.RuntimeException: Exception in Application init method at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:896) at [email protected]/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.springframework.cglib.core.CodeGenerationException: java.lang.IllegalAccessException-->module testSBJFX does not open test.testsbjfx to unnamed module @6c939f49 at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:471) at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:367) at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:575) at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.lambda$new$1(AbstractClassGenerator.java:103) at org.springframework.cglib.core.internal.LoadingCache.lambda$createEntry$1(LoadingCache.java:52) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:57) at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:126) at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:313) at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:562) at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:407) at [email protected]/org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:138) at [email protected]/org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109) at [email protected]/org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:514) at [email protected]/org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:304) at [email protected]/org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:358) at [email protected]/org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:150) at [email protected]/org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:747) at [email protected]/org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:565) at [email protected]/org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) at [email protected]/org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) at [email protected]/org.springframework.boot.SpringApplication.run(SpringApplication.java:310) at [email protected]/org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150) at testSBJFX/test.testsbjfx.TestClass.init(TestClass.java:16) at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:825) ... 2 more Caused by: java.lang.IllegalAccessException: module testSBJFX does not open test.testsbjfx to unnamed module @6c939f49 at java.base/java.lang.invoke.MethodHandles.privateLookupIn(MethodHandles.java:259) at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:461) ... 27 more
Само приложение пишу на Java 17.
Класс TestSbjfxApplication
@SpringBootApplication
public class TestSbjfxApplication {
public static void main(String[] args) {
Application.launch(TestClass.class, args);
}
}
Класс
public class TestClass extends Application {
ConfigurableApplicationContext applicationContext;
@Override
public void init() {
applicationContext = new SpringApplicationBuilder(TestSbjfxApplication.class).run();
}
@Override
public void stop() {
applicationContext.close();
Platform.exit();
}
@Override
public void start(Stage stage) {
applicationContext.publishEvent(new StageReadyEvent(stage));
}
static class StageReadyEvent extends ApplicationEvent {
public StageReadyEvent(Stage stage) {
super(stage);
}
public Stage getStage() {
return ((Stage) getSource());
}
}
}
Класс StageInitializer
@Component
public class StageInitializer implements ApplicationListener<TestClass.StageReadyEvent> {
@Override
public void onApplicationEvent(TestClass.StageReadyEvent event) {
Stage stage = event.getStage();
}
}
module-info.java
module testSBJFX {
requires javafx.graphics;
requires spring.context;
requires javafx.controls;
requires javafx.fxml;
requires spring.boot;
requires spring.boot.autoconfigure;
exports test.testsbjfx to javafx.fxml,javafx.controls,javafx.graphics;
opens test.testsbjfx to javafx.fxml,javafx.controls,javafx.graphics;
}
Файл pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>test</groupId>
<artifactId>testSBJFX</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>testSBJFX</name>
<description>testSBJFX</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>19.0.2.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>19.0.2.1</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>19.0.2.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
В VM options
--module-path="C:\Program Files\Java\javafx-sdk-19.0.2.1\lib"
--add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics