最近在进行osgi的开发中总是出现一些怪问题,比如在Eclipse中能够正常运行的osgi环境中的bundle,当导出到Equinox的环境中(离开Eclipse环境运行),总是出现一些类找不到。查看bundle jar 包中的确没有相关的编译的类存在,经过查找发现是自己的bundle包含了多个源码目录,Eclipse在导出为插件包的时候,总是发现interface目录下的相关类并没有导入到具体的包中。
后来检查MANIFIST.MF中的MANIFIST.MF视图中的Bundle-ClassPath: interface/,
src/
,我的确把相关的包引入到classpath中了,可是还是没有在导出的jar包中看到interface中的类。jar包中只有src目录下的类。我又在build视图中查看,测试导出包的一些配置:
在binary Build中勾选interface后,的确导出包中有了该package,但是里面的都是未编译的java源文件,继续转到build.properties视图中查看和在不断的尝试后的发现问题的根源在这里:
最开始是 source.. =src,
只有有src/这个目录,经过测试,发现它就是导出jar包的source目录指定的配置。
下面是更改后的配置
所有的指定的sourceFolder都如愿的打包到了jar包中了。
这次自己的感觉是,很多时候面对问题要沉着冷静,分析问题,并不断的尝试,问题才有被解决的可能,任何的慌乱都无济于事。
留此文章,以供大家分享。