为了满足将plugin工程打成jar包,但是spring的配置文件不打进jar包的需求。很多时候我们为了可以方便手工配置spring的一些信息,而不用将jar解压而从新压缩,我们需要把Spring的配置文件放在plugin的jar包外这时,如果没有正确的使用spring的Resource就不能加载spring的配置文件,经过多次尝试终于找到一个比较合适的方法,与大家交流。
public static BeanFactory getFactory() {
if (factory == null) {
FileSystemResource resource = new FileSystemResource("appcontextclient.xml");
factory = new XmlBeanFactory(resource);
}
return factory;
}
将appcontextclient.xml文件放到工程根目录下,发布时将appcontextclient.xml放入到你的eclipse的安装目录即可(与eclipse的exe执行文件相同的位置),如果需要可在appcontextclient.xml文件前加入相关的路径来更改你的目录(但是有可能在调试过程中必须要把appcontextclient.xml文件放到你的eclipse IDE的安装目录里,因为大部分时间我们的eclipse IDE是何 workspace分开存放的,这样我们在调试的时候非常别扭,要到IDE里去修改配置文件)。
以上方法并不是唯一的,只是我感觉用起来比较合适的,这样在调试时既可以保证appcontextclient.xml文件在工程目录范围内,有可以在发布时使文件保持在安装目录而不是运行环境的workspace的临时目录里。
同时介绍几个方法可以eclipse方法获得eclipse工具的几个重要路径(注:"IDE"为我的plugin工程的PLUGIN_ID)
Platform.getInstallLocation().getURL()
file:/F:/tools/java/eclipse/eclipse-SDK-3.3-win32/eclipse/
这是我的eclipse IDE的安装目录
Platform.getLocation()
D:/runtime-IDE.product
这是我调试插件时生成的临时运行环境目录,是在调试IDE工程时生成的,就是发布时插件所属eclipse运行环境的WorkSpace目录
Platform.getInstanceLocation().getURL()
file:/D:/runtime-IDE.product/
这个跟上面的一样
Platform.getLocation()
D:/runtime-IDE.product
这个跟上面的也一样
Platform.getLogFileLocation()
D:/runtime-IDE.product/.metadata/.log
运行环境的日志文件路径,发布时插件所属eclipse运行环境的WorkSpace目录下的/.metadata/.log
Platform.getStateLocation(Platform.getBundle("IDE"))
D:/runtime-IDE.product/.metadata/.plugins/IDE
运行环境中IDE的一个临时目录,发布时插件所属eclipse运行环境的WorkSpace目录下/.metadata/.plugins/IDE
Platform.getUserLocation()
file:/C:/Documents and Settings/XX/user
这是我的文档的路径(把用户名X掉,哈哈)
Platform.getBundle("IDE").getLocation()
update@D:/WorkSpace/IDE/
我的IDE工程的路径,对应发布时插件的jar本身,在这个目录下的文件将全部包含在发不得jar里。
Platform.getConfigurationLocation().getURL()
file:/D:/WorkSpace/.metadata/.plugins/org.eclipse.pde.core/IDE.product/
eclipse IDE 自己建的目录
eclipse 本身也有很多加载资源文件的方法可以在org.eclipse.core.runtime.Platform这个类里找到,具体的就请大家找找API吧
posted on 2008-01-05 21:35
小平 阅读(2004)
评论(0) 编辑 收藏 所属分类:
spring 、
eclipse plugIn