首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jar文件的类路径中配置C3p0.properties文件以读取类路径外的C3P0-config.xml

如何在jar文件的类路径中配置C3p0.properties文件以读取类路径外的C3P0-config.xml
EN

Stack Overflow用户
提问于 2014-02-12 18:21:55
回答 1查看 8.2K关注 0票数 2

也许我把这个问题说错了,但问题是。我有一个名为util的库,在util中我们有一个数据库类,它将使用C3P0进行数据库连接。这个util库由团队中的不同开发人员使用。

为了使每个人的生活更容易,因为我们有一个模块化的系统,系统中的每个模块可以指定自己的数据库连接和属性,它认为适合他们的模块。我们这样做的唯一原因是,调用执行查询的方法都是在这个库中定义的,因此,与每个人反复重写相同的代码相比,使用带有该功能的共享库更有效。

当前的设置是,在util库类路径中有C3P0.properties文件,并且在其中定义了C3P0-config.xml文件的路径,如下所示。

com.mchange.v2.c3p0.cfg.xml=./conf/c3p0-config.xml

然后,我建造和罐子,并把它交给其他的发展。然后,他们在应用程序中创建一个conf目录,并添加c3p0-config.xml。目录的结构如下所示

代码语言:javascript
复制
Parent directory - module name {

Sub directories

-lib  -> {Util.jar & other jars}

-conf -> {c3p0-config.xml & other config files}

-logs

-modulename.jar

}

在执行jar文件时,我们得到错误

代码语言:javascript
复制
2014-02-12 20:50:59 INFO  MLog:124 - MLog clients using log4j logging.
2014-02-12 20:50:59 DEBUG MLog:101 - Could not find resource path text file for path '/com/mchange/v2/cfg/vmConfigResourcePaths.txt'. Skipping.
2014-02-12 20:50:59 DEBUG MLog:101 - Added paths from resource path text file at '/mchange-config-resource-paths.txt'
2014-02-12 20:50:59 DEBUG MLog:101 - Reading VM config for path list /com/mchange/v2/log/default-mchange-log.properties, /mchange-commons.properties, /c3p0.properties, hocon:/reference,/application,/c3p0,/, /mchange-log.properties, /
2014-02-12 20:50:59 DEBUG MLog:101 - The configuration file for resource identifier '/mchange-commons.properties' could not be found. Skipping.
java.io.FileNotFoundException: Resource not found at path '/mchange-commons.properties'.
    at com.mchange.v2.cfg.BasicPropertiesConfigSource.propertiesFromSource(BasicPropertiesConfigSource.java:64)
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.firstInit(BasicMultiPropertiesConfig.java:185)
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>(BasicMultiPropertiesConfig.java:110)
    at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)
    at com.mchange.v2.cfg.ConfigUtils.readVmConfig(ConfigUtils.java:115)
    at com.mchange.v2.cfg.MLogConfigSource.readVmConfig(MLogConfigSource.java:46)
    at com.mchange.v2.log.MLogConfig.refresh(MLogConfig.java:59)
    at com.mchange.v2.log.MLog.refreshConfig(MLog.java:59)
    at com.mchange.v2.log.MLog.<clinit>(MLog.java:51)
    at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:51)
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:260)
    2014-02-12 20:50:59 DEBUG MLog:101 - The configuration file for resource identifier 'hocon:/reference,/application,/c3p0,/' could not be found. Skipping.
java.io.FileNotFoundException: HOCON lib (typesafe-config) is not available. Also, no resource available at '/reference,/application,/c3p0,/' for HOCON identifier 'hocon:/reference,/application,/c3p0,/'.
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.configSource(BasicMultiPropertiesConfig.java:86)
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.firstInit(BasicMultiPropertiesConfig.java:184)
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>(BasicMultiPropertiesConfig.java:110)
    at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)
    at com.mchange.v2.cfg.ConfigUtils.readVmConfig(ConfigUtils.java:115)
    at com.mchange.v2.cfg.MLogConfigSource.readVmConfig(MLogConfigSource.java:46)
    at com.mchange.v2.log.MLogConfig.refresh(MLogConfig.java:59)
    at com.mchange.v2.log.MLog.refreshConfig(MLog.java:59)
    at com.mchange.v2.log.MLog.<clinit>(MLog.java:51)
    at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:51)
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:260)
2014-02-12 20:50:59 DEBUG MLog:101 - The configuration file for resource identifier '/mchange-log.properties' could not be found. Skipping.
java.io.FileNotFoundException: Resource not found at path '/mchange-log.properties'.
    at com.mchange.v2.cfg.BasicPropertiesConfigSource.propertiesFromSource(BasicPropertiesConfigSource.java:64)
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.firstInit(BasicMultiPropertiesConfig.java:185)
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>(BasicMultiPropertiesConfig.java:110)
    at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)
    at com.mchange.v2.cfg.ConfigUtils.readVmConfig(ConfigUtils.java:115)
    at com.mchange.v2.cfg.MLogConfigSource.readVmConfig(MLogConfigSource.java:46)
    at com.mchange.v2.log.MLogConfig.refresh(MLogConfig.java:59)
    at com.mchange.v2.log.MLog.refreshConfig(MLog.java:59)
    at com.mchange.v2.log.MLog.<clinit>(MLog.java:51)
    at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:51)
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:260)

有什么问题吗?我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-12 19:43:55

在您显示的日志消息和堆栈跟踪中,没有任何问题。这些都是DEBUG级别的消息。(c3p0 & com.mchange库通常应该记录在INFO上。)

c3p0 & mchange-commons-java检查许多不同地方的潜在配置信息。在许多这样的地方,他们什么也找不到,所以继续前进。在DEBUG登录时,您正在查看库在CLASSPATH中检查(例如,/mchange-log.properties )的过程,但是找不到它。在DEBUG,他们查找的库日志,没有找到的库日志,以及未找到的异常。

所有这些都不值得关注。这是正常的。

主要的问题是c3p0-config.xml中的配置用户是否正在使用。您使用的是文件的相对目录,而不是绝对的文件系统位置。我猜想它会起作用,相对于进程的工作目录进行解释,但我不确定它是否能工作,即使这样,你确定它不会脆弱吗,这取决于用户如何启动您的进程?用户会运行一个脚本来确保正确的工作目录吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21736376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档