启动 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“的主要内容,如果未能解决你的问题,请参考以下文章