osgi一个简单例子由于包名导致的NoClassDefFoundError

osgi原理与最佳实践dictionary的例子,按照书上的文字一步步的建立了四个project,但是报名是自己写的,没有注意太多,DictQuery、LocalDictQuery、RemoteDictQuery的Activator包名、Service接口和Local、Remote的实现的包名都相同,启动后发现LocalDictQuery和RemoteDictQuery都是RESOLVED状态,start了下,竟然抛出一堆堆栈


org.osgi.framework.BundleException: Exception in com.kingdee.eas.Activator.start() of bundle RemoteDictQuery.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
...(省略)
Caused by: java.lang.NoClassDefFoundError: com/kingdee/eas/query/RemoteDictQueryService
at com.kingdee.eas.Activator.start(Activator.java:19)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)


百思不得其解,打断点进去,也的确是抛出了异常。忽然想到上午看到一帖子,说处理遗留系统,经常遇到NullPointerException之类的异常,就是跟每个bundle单独一个classloader有关,有一些懂jvm底层的,问题处理起来会好些。于是想是不是跟包名有关。试着改了包名,重启,ss,竟然是ACTIVE了。真是晕菜,这也有影响,不过现在还没入门还是不好找原因的,先记录下来吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值