`
Dollyn
  • 浏览: 165208 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Eclipse插件中如何读取插件项目下的文件

阅读更多

在进行插件开发的时候,有的时候希望把某些配置文件,或者数据文件和插件一起打包,一般这些文件需要被放在插件项目目录下,以便插件发布的时候可以和插件一起打包发布。

 

但是由于插件发布的时候,一般会打成一个Jar包,虽然可以使用JDK的JarFile这个类读取Jar包中的某文件,但是由于开发过程中调试的时候,并没有打包,即此时需要读取的文件并非在Jar包中,所以需要有一种通用的方法,来获取项目文件夹下的某个文件。

 

下面的语句,可以通过Eclipse里的OSGi的Bundle类,获取插件目录下的某个文件的输入流。

 

 

Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
URL url = bundle.getResource("/icon/xx.txt");
InputStream is = FileLocator.toFileURL(url).openStream();

 

bundle是OSGi的概念,一般情况下,代表一个插件。通过bundle获取一个URL,然后通过工具类FileLocator转换,并且打开一个输入流,这样就可以读取文件的内容了。

 

这种方法的好处,是调试时和发布后通用。

 

分享到:
评论
11 楼 enen1982 2013-11-20  
这个写得相当不错,找了好久,省了我一堆事,能不能复制整个目录
10 楼 ququsxc 2011-07-30  
这个一定要顶
9 楼 samwalt 2009-04-21  
Dollyn 写道

samwalt 写道如果把插件项目打包成jar文件的话,打印语句就不起作用了,不会输出打印语句。安装你插件的那个Eclipse,启动的时候,添加-debug参数,会有个控制台窗口,打印语句会输出。


ok,谢了,可以看到打印信息了。是路径错误,不该用反斜杠。
8 楼 samwalt 2009-04-21  
Dollyn 写道

samwalt 写道如果把插件项目打包成jar文件的话,打印语句就不起作用了,不会输出打印语句。安装你插件的那个Eclipse,启动的时候,添加-debug参数,会有个控制台窗口,打印语句会输出。


谢谢,我晚上试试。
7 楼 Dollyn 2009-04-21  
samwalt 写道

如果把插件项目打包成jar文件的话,打印语句就不起作用了,不会输出打印语句。

安装你插件的那个Eclipse,启动的时候,添加-debug参数,会有个控制台窗口,打印语句会输出。
6 楼 samwalt 2009-04-21  
Dollyn 写道

samwalt 写道Dollyn 写道如果是是找不到里面的类,可以参考http://dollyn.iteye.com/blog/359064    你好,不是找不到里面的类。    是这样的:插件项目的功能是要生成一个Web项目,插件项目的路径下有一些jar文件,插件项目本身并不需要用这些jar文件里面的类,而是把jar文件拷贝到生成的web项目的lib目录中。    现在插件项目用run as -> eclipse application的方法,是可以正常运行的,就是说jar文件可以从插件项目中拷贝到生成的Web项目中。但是把插件项目打包成一个jar文件,部署到dropins目录中运行,打包的jar包中的jar文件就不能复制到web项目中了。    不知道我说清楚了没有?可以加条打印语句,或者看日志里有没有记录的异常。有肯能是路径的大小写问题,具体也不好确定。


如果把插件项目打包成jar文件的话,打印语句就不起作用了,不会输出打印语句。
问题出在run as eclipse application时,插件项目是一个文件夹,而打包之后变成
一个文件了。
5 楼 Dollyn 2009-04-21  
samwalt 写道

Dollyn 写道如果是是找不到里面的类,可以参考http://dollyn.iteye.com/blog/359064    你好,不是找不到里面的类。    是这样的:插件项目的功能是要生成一个Web项目,插件项目的路径下有一些jar文件,插件项目本身并不需要用这些jar文件里面的类,而是把jar文件拷贝到生成的web项目的lib目录中。    现在插件项目用run as -> eclipse application的方法,是可以正常运行的,就是说jar文件可以从插件项目中拷贝到生成的Web项目中。但是把插件项目打包成一个jar文件,部署到dropins目录中运行,打包的jar包中的jar文件就不能复制到web项目中了。    不知道我说清楚了没有?

可以加条打印语句,或者看日志里有没有记录的异常。
有肯能是路径的大小写问题,具体也不好确定。
4 楼 samwalt 2009-04-20  
Dollyn 写道

如果是是找不到里面的类,可以参考http://dollyn.iteye.com/blog/359064

    你好,不是找不到里面的类。

    是这样的:插件项目的功能是要生成一个Web项目,插件项目的路径下有一些jar文件,插件项目本身并不需要用这些jar文件里面的类,而是把jar文件拷贝到生成的web项目的lib目录中。

    现在插件项目用run as -> eclipse application的方法,是可以正常运行的,就是说jar文件可以从插件项目中拷贝到生成的Web项目中。但是把插件项目打包成一个jar文件,部署到dropins目录中运行,打包的jar包中的jar文件就不能复制到web项目中了。

    不知道我说清楚了没有?
3 楼 Dollyn 2009-04-20  
如果是是找不到里面的类,可以参考http://dollyn.iteye.com/blog/359064
2 楼 Dollyn 2009-04-20  
是你要自己读取里面的jar文件?不能读取什么意思,有什么错误。
调试还是有可能的,比如添加一些打印信息,然后启动的时候,添加-debug参数;
或者查看下工作区间里的.log文件。
1 楼 samwalt 2009-04-19  
你好,我有一个插件项目,插件项目的根目录下有一个文件夹存放了第三方jar文件。把这个插件项目打包成jar文件形式的插件,并部署这个插件。现在是要读取这个jar文件形式的插件中的第三方jar文件,参考了你上面的java代码,但是仍然不能读取插件项目下的第三方jar文件,又不能调试,能指点一下哪里可能有问题吗?

相关推荐

Global site tag (gtag.js) - Google Analytics