【问题标题】:class path resource [default/jdbc.properties] cannot be opened because it does not exist类路径资源 [default/jdbc.properties] 无法打开,因为它不存在
【发布时间】:2016-06-19 20:23:33
【问题描述】:

我认为我在继承的一个大型 Maven 多模式项目方面取得了良好的进展。在 Tomcat 和 JAVA 项目方面,我是一个完全的初学者,所以请原谅我的天真。我相信我需要知道如何定义我的 JDBC 属性配置的位置,但老实说,我不知道从哪里开始。

我正在尝试使用“mvn tomcat7:run”通过终端运行我的项目,并收到如下所述的严重错误。

具体错误原因:

引起:org.springframework.beans.factory.BeanCreationException: 创建具有名称的 bean 时出错 'eu.digient.billfold.support.dao.properties':调用 init 方法失败;嵌套异常是 java.io.FileNotFoundException: 类路径资源 [default/jdbc.properties] 无法打开,因为 它不存在

我在 Maven 项目中的许多 .IML 文件中都找到了这个字符串,语法是什么意思,它在哪里寻找配置?

 <util:properties id="eu.digient.billfold.support.dao.properties"
                 location="classpath:#{systemProperties['configProfile']?:'default'}/jdbc.properties" />

关于 JBDC 配置的任何提示和建议都会很棒,我知道它用于定义数据库连接详细信息。在这种情况下,与 Hibernate for JAVA 的连接对我来说是全新的。

(除了通过块引用之外,我不确定如何将其添加为下面的块,所以说我是否缺少更易读的方法?)

完整的终端错误输出:

严重:向 org.springframework.web.context.ContextLoaderListener 类的侦听器实例发送上下文初始化事件的异常 org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0”的bean时出错:设置bean时无法解析对bean“eu.digient.billfold.support.dao.properties”的引用属性“属性”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为 'eu.digient.billfold.support.dao.properties' 的 bean 时出错:调用 init 方法失败;嵌套异常是 java.io.FileNotFoundException: 类路径资源 [default/jdbc.properties] 无法打开,因为它不存在 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1393) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1134) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) 在 org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:657) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461) 在 org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 在 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 原因:org.springframework.beans.factory.BeanCreationException:创建名为“eu.digient.billfold.support.dao.properties”的bean时出错:调用init方法失败;嵌套异常是 java.io.FileNotFoundException: 类路径资源 [default/jdbc.properties] 无法打开,因为它不存在 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1488) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323) ... 23 更多 引起:java.io.FileNotFoundException:类路径资源[default/jdbc.properties]无法打开,因为它不存在 在 org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157) 在 org.springframework.core.io.support.EncodedResource.getInputStream(EncodedResource.java:143) 在 org.springframework.core.io.support.PropertiesLoaderUtils.fillProperties(PropertiesLoaderUtils.java:98) 在 org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:175) 在 org.springframework.core.io.support.PropertiesLoaderSupport.mergeProperties(PropertiesLoaderSupport.java:156) 在 org.springframework.beans.factory.config.PropertiesFactoryBean.createInstance(PropertiesFactoryBean.java:113) 在 org.springframework.beans.factory.config.PropertiesFactoryBean.createProperties(PropertiesFactoryBean.java:98) 在 org.springframework.beans.factory.config.PropertiesFactoryBean.afterPropertiesSet(PropertiesFactoryBean.java:69) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1547) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1485) ... 30 更多

【问题讨论】:

    标签: java spring hibernate maven tomcat


    【解决方案1】:

    jdbc.properties文件放到src\main\resources\default目录下

    【讨论】:

    • 太好了,我会尝试,因为我的项目是多模式的,我必须对所有层都这样做吗?我假设这样想,因为大多数层在 IML 中都有 "classpath:#{systemProperties['configProfile']?:'default'}/jdbc.properties" 字符串。那么这个字符串是标准吗?我很想知道这意味着什么。
    • 对不起,我必须在运行项目之前在本地设置一个数据库,还是当项目作为配置的一部分启动时 Hibernate 会启动它。我习惯于连接到现有的 MYSQL DB。这个项目曾经工作过,而且似乎大部分都是配置的,在本地修复依赖关系是一项艰巨的任务。
    • @Beloudest: ">我对所有层都这样做?" - 您可以在每个 maven 模块中执行此操作,只要它被组装到 JAR 并且此 JAR 与应用程序一起部署即可。这是有效的,因为“类路径:”扫描所有罐子。但是我不知道如果您在同一个文件夹中有多个同名文件会发生什么
    • @Beloudest: >"我必须在运行项目之前在本地设置一个数据库" - 在普通的 Spring 应用程序中,Spring 将启动 Hibernate,因此 Spring 可以通过其属性配置休眠。
    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多