Cannot determine embedded database driver class for database type NONE(真正解决的办法)

前言

没什么好说的,我相信碰见这种错基本上都很难受,这一看关键字,咱就会想这是数据库没有配置信息啊,嗯没错是的,可是咱们的项目也很简单,基本都是默认配置文件application.yml,怎么会没有呢?有点意思啊,哈哈 直接开怼就完事了。

依赖是否全面

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            <version>${server.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>${server.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.xwl</groupId>
            <artifactId>common-server</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.servo</groupId>
            <artifactId>servo-core</artifactId>
            <version>0.10.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.5</version>
        </dependency>
    </dependencies>

解析common-server服务

这玩意就是咱们常说的工具类或者公共服务,大家接触过分布式项目的不用我多说了哈。总之就是我的业务服务引用了它(也就是我要用它的东西,例如:实体,工具类,异常信息抛出等

可就是这玩意让我进了坑,工程根据正常流程走,打成jar包,一运行直接GG

Cannot determine embedded database driver class for database type NONE

公共服务(核心)依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <!--<version>5.0.4.RELEASE</version>-->
            <version>4.3.24.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
        <dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>javax.persistence-api</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>

看了一下也没问题啊,该有的依赖都有,而且我这个公共服务也不需要实际的jar只需提供给外部服务引入其中的API即可

于是-排除依赖是否全面问题

百度出的解决方案

1.SpringBoot默认加载自己的数据源,咱需排除这个数据源

根据提示修改配置文件:

  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

看着很有理,运行直接再报错,那就是没用了呗

启动类排除默认数据源(道理和上面一样的)

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

没错,依然GG

2.有个人给了这样一个依赖,是一个hibernate的依赖,如下

<dependency>
        <groupId>com.h2database</groupId> 
        <artifactId>h2</artifactId>
        <scope>runtime</scope> 
</dependency>

这个依赖一添加,再次重新打包,运行!竟然没报错----
可是问题来了:这个依赖据我所知是Hibernate的,它的意思就是我的java程序运行后自动生成一个数据源信息,但是大家忘记了一个东西,它生成的就是我们要的吗?并非如此,这样一来程序是运行起来了,但是数据库确连不上,可以说一点用没有,我们要解决的是实际问题,而不是单纯的不让它报错~

解决问题步骤:

针对如下场景可参考我这个方案


1.打开你程序工程,确保你编译完成后,配置文件和基本java文件已全部编译完成在target
在这里插入图片描述
2.解压程序目录target下的jar包,查看字节码文件目录,
在这里插入图片描述
进入目录
D:\myProject\my-web-project\my-xue\other-server\target\other-server-1.0-SNAPSHOT\BOOT-INF\classes下查看如图所示

在这里插入图片描述
3.解决办法:pom文件添加读取配置文件路径信息
整个build工程配置信息如下

 <build>
        <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

核心就是这里,要和你的配置文件存放目录路径保持一致

<resource>
   <directory>src/main/resources</directory>
</resource>

这样的话就OK了,完事之后你重新打包编译再次运行java-jar ```````
在这里插入图片描述

感悟

最后实际解决问题也就添加了三行代码,可就是这三行代码让我心里也挺高兴,也许这就是程序的魅力所在吧,记录一下问题,分享给其它码农们,加油~

联系我

如果你没解决问题,联系我,我很乐意和你一起探讨
Q:2509647976
WX: x331191249

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值