RCP工程如何加入第三方jar包(与一般java application 不同!!!)

来源:互联网 发布:ubuntu su 认证失败 编辑:程序博客网 时间:2024/05/19 10:55

今天下午郁闷了一天,在开发rcp工程的过程中想要调用第三方的jar包,一开始就是在build path中直接add external jars,写完源代码也没有出现eclipse的错误提示(一般这样照常识的话就认为jar包没有问题,且运行应该能自动找到class),可以问题就出来了,运行时一直提示classnotfind错误,一开始我就以为是classpath的问题,我甚至打开jar文件查看了那个class确实在工程了面已经添加了啊,到底是为什么呢,后来排除了classpath的原因以后我就想到是不是和RCP的配置文件有点关系,因为这和一般的java 工程还不一样样,于是搜到了下面这篇文章,所以在rcp工程中加入第三方jar包一定要按照下面说的进行,不要用build path:

 

 

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

 引自:http://jesse-dht.javaeye.com/blog/28350

 

还有在按照上述方法解决问题的过程中自己的总结:

如下图所示:

我们正确的加入jar包应该是在plugin.xml中的runtime中,然后add,注意如果出现五角星的.   jar 包前面别以为这个是无关紧要的,事实上我第一次add以后就自动出现了这个.  jar包,我把它删除了,导致最后真个rcp都运行不起来,这样看来这个.  jar包应该就是新建rcp以后自动添加的jar包了,是运行rcp的基础,如果不小心误删了,那么惦记New输入. 就行了,这个也是我急中生智想出来的,好了,差不多就这些吧,今天忙了一个下午,哎,现在可以继续写代码了

原创粉丝点击