@ant
谢谢你的留言,请把你的发到jx1984520@163.com,如果能够贴出来,那请贴到我的博客上,这样有更多的人可以看到。
关于我遇到的问题,我已经在eclipse3.2中顺利跑起来了。我导师说这种错误提示一方面是确实缺少了commons-longing.jar包,但也有可能是因为commons-longing.jar包,我认为这种可能性也是存在的,因为利用eclipse自动加的包确实可能重复,不过我还没做过实验,希望遇到同意问题的同学可以去试试,并能把结果发上来。
最后,再次谢谢楼上的留言。
在rcp应用程序中引用外部jar后产生的NoClassDefFoundError的解决
在开始利用eclispe自动生成rcp应用程序后,在eclipse的插件平台下,没有导入相关的jar包,程序运行正常,但是当导入了相关jar包后,比如,在程序中利用到了common的相关包,利用了spring,hibernate等相关的包,建立构建路径后,在整个工程中没有发现异常,各类也没有显示错误信息,但运行系统程序时,却提示下列异常:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
即使是我们在程序中不引用LogFactory 类的包,也会弹出其他类的NoClassDefFoundError异常,什么原因导致了这个现象呢(在工程中显示导入文件jar包无误,发现构建路径也无误)?
原来,在构建rcp应用程序时,针对lib文件夹的添加,插件清单需要修改,在插件清单中需要添加对应的jar包的路径:用默认的plug-in manifese editor打开plugin.xml文件,选择Runtime,我们需要在ClassPath一项里做相应的修改:在插件清单中添加我们用到的外部jar包。如果不指定,我们定义的类信息和其他的资源信息就不能添加到插件应用程序中去了,则会提示ClassNotFoundException。
重新运行程序,果然正常了。
将rcp应用程序导出时也需要注意:我们也同样需要将我们自己写的代码添加runtime的classpath中,我提供的方法是:选择右边的add按钮,添加bin目录(class文件所在的目录),有人添加的是jar,有的人提供的是一个点(即:.)。添加完后,导出,就发现应用程序能够正常地运行了,否则,又会发现ClassNotFoundException(这次提示的是我们自己编写的代码找不到了)
这是我找到得关于这个问题的其中一个解决方案,因为跟其他解决方案比较不同,而且讲得比较有道理,就记了下来,以供大家参考。因为不懂如何修改pulg-in.xml文件,因此还在实验中。希望各位同仁多多指教。