タイトルの通りです。
pom.xml への thymeleaf-extras-java8time 追加だけで十分になっており、 以前のような @Configuration ThymeleafConfig を作成すると、 SpringBoot 起動時にエラーとなります。
pom.xml
<dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId> <version>2.1.0.RELEASE</version> </dependency>
jp.end0tknr.config.ThymeleafConfig.java
package jp.end0tknr.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.thymeleaf.extras.java8time.dialect.Java8TimeDialect; @Configuration public class ThymeleafConfig { @Bean public Java8TimeDialect java8TimeDialect() { return new Java8TimeDialect(); } }
エラーメッセージ
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ [32m :: Spring Boot :: [39m [2m (v2.4.5)[0;39m [2m2021-05-05 19:05:08.922[0;39m [32m INFO[0;39m [35m14240[0;39m [2m---[0;39m [2m[ main][0;39m [36mjp.end0tknr.MySpringApplication [0;39m [2m:[0;39m Starting MySpringApplication using Java 1.8.0_202 on LAPTOP-Q767CC9I with PID 14240 (C:\Users\end0t\workspace_eclipse_2020\MySpring\target\classes started by end0t in C:\Users\end0t\workspace_eclipse_2020\MySpring) [2m2021-05-05 19:05:08.926[0;39m [32m INFO[0;39m [35m14240[0;39m [2m---[0;39m [2m[ main][0;39m [36mjp.end0tknr.MySpringApplication [0;39m [2m:[0;39m No active profile set, falling back to default profiles: default [2m2021-05-05 19:05:09.509[0;39m [31mERROR[0;39m [35m14240[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.boot.SpringApplication [0;39m [2m:[0;39m Application run failed java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration.propertySourcesPlaceholderConfigurer at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:60) ~[spring-boot-autoconfigure-2.4.5.jar:2.4.5] at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:108) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:193) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:153) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:129) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:343) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5] at jp.end0tknr.MySpringApplication.main(MySpringApplication.java:10) [classes/:na] Caused by: java.lang.IllegalStateException: Failed to introspect Class [jp.end0tknr.config.ThymeleafConfig] from ClassLoader [sun.misc.Launcher$AppClassLoader@764c12b6] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:358) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:414) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$2(AbstractAutowireCapableBeanFactory.java:747) ~[spring-beans-5.3.6.jar:5.3.6] at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_202] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:746) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:685) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:656) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1670) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:570) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:542) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.boot.autoconfigure.condition.OnBeanCondition.collectBeanNamesForType(OnBeanCondition.java:238) ~[spring-boot-autoconfigure-2.4.5.jar:2.4.5] at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getBeanNamesForType(OnBeanCondition.java:231) ~[spring-boot-autoconfigure-2.4.5.jar:2.4.5] at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getBeanNamesForType(OnBeanCondition.java:221) ~[spring-boot-autoconfigure-2.4.5.jar:2.4.5] at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchingBeans(OnBeanCondition.java:169) ~[spring-boot-autoconfigure-2.4.5.jar:2.4.5] at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchOutcome(OnBeanCondition.java:144) ~[spring-boot-autoconfigure-2.4.5.jar:2.4.5] at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47) ~[spring-boot-autoconfigure-2.4.5.jar:2.4.5] ... 18 common frames omitted Caused by: java.lang.NoClassDefFoundError: org/thymeleaf/dialect/IExpressionEnhancingDialect at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_202] at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_202] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_202] at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[na:1.8.0_202] at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[na:1.8.0_202] at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[na:1.8.0_202] at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[na:1.8.0_202] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_202] at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_202] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_202] at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_202] at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_202] at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_202] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.6.jar:5.3.6] ... 34 common frames omitted Caused by: java.lang.ClassNotFoundException: org.thymeleaf.dialect.IExpressionEnhancingDialect at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_202] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_202] ... 50 common frames omitted [2m2021-05-05 19:05:09.516[0;39m [33m WARN[0;39m [35m14240[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.boot.SpringApplication [0;39m [2m:[0;39m Unable to close ApplicationContext java.lang.IllegalStateException: Failed to introspect Class [jp.end0tknr.config.ThymeleafConfig] from ClassLoader [sun.misc.Launcher$AppClassLoader@764c12b6] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:358) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:414) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$2(AbstractAutowireCapableBeanFactory.java:747) ~[spring-beans-5.3.6.jar:5.3.6] at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[na:1.8.0_202] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:746) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:685) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:656) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1670) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:570) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:542) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:667) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:659) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1300) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.boot.SpringApplication.getExitCodeFromMappedException(SpringApplication.java:914) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.getExitCodeFromException(SpringApplication.java:902) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.handleExitCode(SpringApplication.java:889) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:830) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:349) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5] at jp.end0tknr.MySpringApplication.main(MySpringApplication.java:10) [classes/:na] Caused by: java.lang.NoClassDefFoundError: org/thymeleaf/dialect/IExpressionEnhancingDialect at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_202] at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_202] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_202] at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[na:1.8.0_202] at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[na:1.8.0_202] at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[na:1.8.0_202] at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[na:1.8.0_202] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_202] at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_202] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_202] at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_202] at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_202] at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_202] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.6.jar:5.3.6] ... 21 common frames omitted Caused by: java.lang.ClassNotFoundException: org.thymeleaf.dialect.IExpressionEnhancingDialect at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_202] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_202] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_202] ... 37 common frames omitted