错误如下:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
上面的大致意思是:数据源配置文件找不到。
1、背景:
springboot项目,在学习介入Eureka的时候建立的server端;第一次建立项目的时候,写入了依赖启动时是没问题的,但是后面在写好了client端后,再次启动就出现了问题,报了几个错误,这个是其中一个。
2、原因:
经过排查,最终发现原因挺低级的。Server端属于消费者项目(非数据提供方),所以在测试的时候还没配置到数据源进去,但是由于按照自学网课上的配置先加入了各种依赖,在pom中引入了mybatis-spring-boot-starter这个依赖,这个依赖按照springboot自动装配原则约束自己去配置数据源,所以导致了报出这个异常;
3、解决方案:参考百度得到的
1)去除pom中的mybatis-spring-boot-starter依赖,我个人第一操作也是去除这个依赖重启项目发现没解决,有可能是其他的相关依赖也需要去除;
2)设置启动springboot项目时排除数据源自动配置:
在启动类注解上设置:
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
而后启动就可以正常运行进入Eureka了:
4、第三种解决方案:
还有一种解决方案,是配置servlet并且切换其版本,上面的报错意思是在servlet-api2.5版本下的类与tomcat容器自带的上下文类产生冲突,所以,可以直接给项目加入servlet-api其他版本,例如:
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> </dependency>
启动发现也可以解决问题。