osgi原理与最佳实践dictionary的例子,按照书上的文字一步步的建立了四个project,但是报名是自己写的,没有注意太多,DictQuery、LocalDictQuery、RemoteDictQuery的Activator包名、Service接口和Local、Remote的实现的包名都相同,启动后发现LocalDictQuery和RemoteDictQuery都是RESOLVED状态,start了下,竟然抛出一堆堆栈
百思不得其解,打断点进去,也的确是抛出了异常。忽然想到上午看到一帖子,说处理遗留系统,经常遇到NullPointerException之类的异常,就是跟每个bundle单独一个classloader有关,有一些懂jvm底层的,问题处理起来会好些。于是想是不是跟包名有关。试着改了包名,重启,ss,竟然是ACTIVE了。真是晕菜,这也有影响,不过现在还没入门还是不好找原因的,先记录下来吧。
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了。真是晕菜,这也有影响,不过现在还没入门还是不好找原因的,先记录下来吧。