no manifiest section for signature file entry OSGI-OPT/src/org/osgi/service/device/DriverLocator.java

好书推荐:Java Web开发实战

在使用maven-bundle-plugin在进行osgi bundle开发时,有时mvn install会碰到如下的报错:

错误:构造处理程序对象 no manifiest section for signature file entry OSGI-OPT/src/org/osgi/service/device/DriverLocator.java 时抛出异常

我碰到这个问百思不得其解,由于现在玩osgi的少,在google、stackoverflow上的资料偏少,很难找到解决办法,后来反复尝试,发现只要在pom配置时,保证配置的<Export-Package>其有一个真实存在包路径即可,不能写成*,否则就会报上面的错误;如果这个bundle确实没有package需要被export出去,那么就要写<Private-Package>,且里面要有具体的真实存在包路径或者包路径的通配符。

我用的maven-bundle-plugin是1.4.3版的,不知道后来的版本是否对这方面有改进。

还有类似原因的问题,比如在mvn install的时候出现如下的错误提示:

[WARNING] Warning building bundle ipojo.examples:hello.service:bundle:1.5.0-SNAPSHOT : Instructions for Export-Package that are never used: hello\.service\..*|hello\.service
[WARNING] Warning building bundle ipojo.examples:hello.service:bundle:1.5.0-SNAPSHOT : Superfluous export-package instructions: [hello.service.*]
[WARNING] Warning building bundle ipojo.examples:hello.service:bundle:1.5.0-SNAPSHOT : Did not find matching referal for *
[ERROR] Error building bundle ipojo.examples:hello.service:bundle:1.5.0-SNAPSHOT : The JAR is empty

这个解决方法,也和上面的相同,在maven-bundle-plugin中添加<Export-Package>或者<Private-Package>的配置即可。

 

Post Footer automatically generated by wp-posturl plugin for wordpress.