在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(这次提示的是我们自己编写的代码找不到了)

 



你可能感兴趣的:(apache,eclipse,spring,Hibernate,xml)