springboot启动异常

Error creating bean with name ‘dataSource’

org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'dataSource': 
Unsatisfied dependency expressed through field 'basicProperties'; 
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties':
Instantiation of bean failed; 
nested exception is org.springframework.beans.BeanInstantiationException: 
Failed to instantiate [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties]: 
Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType

报错异常分析:

Spring应用程序中名为“dataSource”的bean的依赖项注入存在问题。具体问题在于“dataSource”bean的“basicProperties”字段。此字段有一个未满足的依赖项。

嵌套异常进一步解释了此错误的根本原因,该异常表示“DataSourceProperties”bean的实例化失败。它遇到“BeanInstanceException”,其中“DataSourceProperties”类的构造函数引发了异常。此异常的根本原因是类“org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType”的“NoClassDefFoundError”。

“NoClassDefFoundError”表明运行时在类路径上找不到类“EmbeddedDatabaseType”。这个类通常是spring Framework中“spring-jdbc”模块的一部分。

要解决此问题,应确保在项目的生成配置中正确包含必要的依赖项。具体来说,需要确保在构建文件(例如,Maven的pom.xml或Gradle的build.Gradle)中正确指定了“spring-jdbc”依赖项。

解决问题

对于Maven,可以在pom.xml中添加以下依赖项:

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-jdbcartifactId>
dependency>

对于Gradle,那可以在build.gradle中添加一下依赖:

implementation 'org.springframework.boot:spring-boot-starter-jdbc'

SpringBoot:jar中没有主清单属性

通过springboot搭建一个服务,在用idea或eclipse启动的时候,是可以启动的,但是将服务达成jar包之后,在命令行中通过java -jar jar包名的方式启动的时候,无法启动,并提示:jar中没有主清单属性。

这个原因是默认情况下,带有main方法的类是不会添加到manifest中的,为了生成可执行的jar,需要借助插件如下

<plugin>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-maven-pluginartifactId>
    <configuration>
        <mainClass>com.xxx.xxx.ApplicationmainClass>
    configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackagegoal>
            goals>
        execution>
    executions>
plugin>

将mainClass中的内容换成自己的服务主类路径就可以了。
重新打包,再通过命令行的形式就可以启动起来了。

你可能感兴趣的:(springboot,spring,boot,后端,java)