研究 ActiveJDBC 后对 ClassLoader 有更深的理解

鉴客 发布于 2011/07/28 09:10
阅读 704
收藏 0

这两天在研究 ActiveJDBC 的时候碰到了这样一个问题,该问题最终得以解决。

这个问题简单描述如下:

ActiveJDBC 需要加载 activejdbc_models.properties 配置文件,该文件位于项目的 classpath 目录,也就是编译输出的目录。

当我使用 -Djava.ext.dirs 来加载 ActiveJDBC 的 jar 包时报无法找到 activejdbc_models.properties 文件,但如果我用 -cp xxxx.jar 来加载 jar 包就OK。

然后翻读了一篇关于 ClassLoader 的文章:《理解 Java ClassLoader 机制》

因为通过 -Djava.ext.dirs 来加载的类,其 ClassLoader 是优先于通过 -cp 进行加载,而使用 -cp 加载和应用程序本身的 ClassLoader 是同一个,因此可以找到应用程序中的 activejdbc_models.properties ,而前者就不行。

加载中
0
大东哥
大东哥
研究playframework会让理解更深 。
大东哥
大东哥
@SeekerLee : 自己实现一个jvm,效果更好,哇卡卡。
SeekerLee
SeekerLee
配合看看jvm spec效果更好^_^
返回顶部
顶部