今天写le一个bundle,名字叫JmsSendBundle,用spring的jms template来实现发送jms消息.,写完之后,在eclipse环境中运行都正常,但导出到我的osgi环境中,始终报一个错误:java.lang.NoClassDefFoundError: javax/naming/Referenceable
搞了一上午,最后比较eclipse和我自己的osgi的启动环境变量,发现eclipse中osgi.compatibility.bootdelegation的值是true,而我的是false,结果把这个参数改成true之后就可以了.
然后去google了下osgi.compatibility.bootdelegation这个参数的作用,如果该参数值为"true",当一个类或资源查找不到时,类加载器会启动父类加载器进行最后的查找。该参数的默认值为"true",不知道我的为什么缺省成false了.