1
回答
研究 ActiveJDBC 后对 ClassLoader 有更深的理解
注册华为云得mate10,2.9折抢先购!>>>   

这两天在研究 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 ,而前者就不行。

举报
鉴客
发帖于7年前 1回/693阅
顶部