поэтому я следовал этому руководству по созданию небольшого веб-сайта: https://medium.com/@alexandre.therrien3 ... 413e661db5
Я использовал mssql в качестве базы данных, но кажется, что у Spring возникают некоторые проблемы с подключением к нему в моей Файл DataSourceConfig.java:
Импорт org.springframework.boot.autoconfigure.jdbc не может быть разрешен
Сначала при импорте было еще несколько ошибок в VS Code, поэтому я выполнил установку mvn:
mvn install:install-file "-Dfile=sqljdbc4.jar" "-DgroupId=com.microsoft.sqlserver" -DartifactId=sqljdbc4 "-Dversion=4.0" -Dpackaging=jar
полное сообщение об ошибке:
PS C:\Users\Sebastian\vscode Projects\website2\demo> & 'C:\Users\Sebastian\.jdks\corretto-17.0.18\bin\java.exe' '@C:\Users\SEBAST~1\AppData\Local\Temp\cp_dnf8iv2hq8gg5ioxq6an289fp.argfile' 'com.tutorial.medium.demo.DemoApplication'
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v4.0.5)
2026-04-01T14:29:31.379+02:00 INFO 30648 --- [ main] c.tutorial.medium.demo.DemoApplication : Starting DemoApplication using Java 17.0.18 with PID 30648 (C:\Users\Sebastian\vscode Projects\website2\demo\target\classes started by Sebastian in C:\Users\Sebastian\vscode Projects\website2\demo)
2026-04-01T14:29:31.385+02:00 INFO 30648 --- [ main] c.tutorial.medium.demo.DemoApplication : No active profile set, falling back to 1 default profile: "default"
2026-04-01T14:29:31.816+02:00 WARN 30648 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration.propertySourcesPlaceholderConfigurer
2026-04-01T14:29:31.821+02:00 INFO 30648 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2026-04-01T14:29:31.839+02:00 ERROR 30648 --- [ main] o.s.boot.SpringApplication : 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-4.0.5.jar:4.0.5]
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:100) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:196) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:124) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:464) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:316) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:795) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:603) ~[spring-context-7.0.6.jar:7.0.6]
at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-web-server-4.0.5.jar:4.0.5]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) ~[spring-boot-4.0.5.jar:4.0.5]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) ~[spring-boot-4.0.5.jar:4.0.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) ~[spring-boot-4.0.5.jar:4.0.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) ~[spring-boot-4.0.5.jar:4.0.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-4.0.5.jar:4.0.5]
at com.tutorial.medium.demo.DemoApplication.main(DemoApplication.java:15) ~[classes/:na]
Caused by: java.lang.IllegalStateException: Failed to introspect Class [com.tutorial.medium.daos.datasourceconfig.DataSourceConfig] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@5e2de80c]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:483) ~[spring-core-7.0.6.jar:7.0.6]
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:360) ~[spring-core-7.0.6.jar:7.0.6]
at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:417) ~[spring-core-7.0.6.jar:7.0.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$0(AbstractAutowireCapableBeanFactory.java:750) ~[spring-beans-7.0.6.jar:7.0.6]
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:749) ~[spring-beans-7.0.6.jar:7.0.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:683) ~[spring-beans-7.0.6.jar:7.0.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:655) ~[spring-beans-7.0.6.jar:7.0.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1699) ~[spring-beans-7.0.6.jar:7.0.6]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:632) ~[spring-beans-7.0.6.jar:7.0.6]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:604) ~[spring-beans-7.0.6.jar:7.0.6]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:589) ~[spring-beans-7.0.6.jar:7.0.6]
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.collectBeanDefinitionsForType(OnBeanCondition.java:334) ~[spring-boot-autoconfigure-4.0.5.jar:4.0.5]
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getBeanDefinitionsForType(OnBeanCondition.java:323) ~[spring-boot-autoconfigure-4.0.5.jar:4.0.5]
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchingBeans(OnBeanCondition.java:221) ~[spring-boot-autoconfigure-4.0.5.jar:4.0.5]
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.evaluateConditionalOnMissingBean(OnBeanCondition.java:204) ~[spring-boot-autoconfigure-4.0.5.jar:4.0.5]
at org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchOutcome(OnBeanCondition.java:149) ~[spring-boot-autoconfigure-4.0.5.jar:4.0.5]
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47) ~[spring-boot-autoconfigure-4.0.5.jar:4.0.5]
... 17 common frames omitted
Caused by: java.lang.NoClassDefFoundError: DataSourceProperties
at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na]
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3404) ~[na:na]
at java.base/java.lang.Class.getDeclaredMethods(Class.java:2506) ~[na:na]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:465) ~[spring-core-7.0.6.jar:7.0.6]
... 34 common frames omitted
Caused by: java.lang.ClassNotFoundException: DataSourceProperties
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
... 38 common frames omitted
Вот исходный код:
4.0.0
org.springframework.boot
spring-boot-starter-parent
4.0.5
com.tutorial.medium
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
17
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-webmvc
org.springframework.boot
spring-boot-starter-webmvc-test
test
com.microsoft.sqlserver
sqljdbc4
4.0
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-maven-plugin
spring.jpa.hibernate.ddl-auto = none
spring.datasource.url=jdbc:sqlserver://localhost:1433/test
spring.datasource.username=root
spring.datasource.password=pass
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
package com.tutorial.medium.daos.datasourceconfig;
import javax.sql.DataSource;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
@Configuration
public class DataSourceConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSourceProperties getDataSourceProperties(){
return new DataSourceProperties();
}
@Bean
public DataSource getDataSource(){
return getDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
public JdbcTemplate getJdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
public NamedParameterJdbcTemplate getNamedJdbcTemplate(DataSource dataSource){
return new NamedParameterJdbcTemplate(dataSource);
}
}