启动 tomcat 报错“Invalid bean definition with name ‘dataSource‘ defined in URL“

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动 tomcat 报错“Invalid bean definition with name ‘dataSource‘ defined in URL“相关的知识,希望对你有一定的参考价值。

异常

用记事本修改了数据库连接参数文件 context.properties 后再次启动 tomcat 报错:

2022-05-10 09:11:58 [ERROR] ContextLoader: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dataSource' defined in URL [file:/home/apache-tomcat-8.5.13/webapps/xxx-xx-xxxxxxx-1.0-SNAPSHOT/WEB-INF/classes/context.xml]: Could not resolve placeholder 'mysql.url' in string value "$mysql.url"
	at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:209)
	at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:220)
	at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:84)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:662)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:388)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:293)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4745)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

修改是通过 xshell 打开的记事本进行修改的:


但保存后重启 tomcat 仍然报这个错。

解决

先把 context.properties 文件中的内容复制下面,然后删除掉原来的 context.properties 文件(Linux系统中可以通过 rm -rf context.properties 命令进行删除)。

接着重新创建一个同名的 context.properties 文件(使用 vi context.properties 命令进行创建),然后将刚才复制的内容粘贴进去,注意是在Linux系统中完成,而不是在记事本中完成。


最后重启 tomcat 就可以了。

参考资料:

以上是关于启动 tomcat 报错“Invalid bean definition with name ‘dataSource‘ defined in URL“的主要内容,如果未能解决你的问题,请参考以下文章

tomcat启动报错!

java服务tomcat启动报错

IntelliJ IDEA启动tomcat6.0报错,求助!!!!!!!!!!!!!

tomcat 启动报错日志查看

tomcat启动报错,求高手指点

tomcat 500报错