买手表去哪个网站买是正品的,网站建设公司外链怎么做,手机网站建设咨询,wordpress 占有率目的#xff1a;Eclipse插件开发中#xff0c;经常要引用第三方包或者是引用其他插件中的类#xff0c;由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同#xff0c;经常导致开发过程OK#xff0c;一旦运行则出现NoClassDefFoundError的问题。本文的目的是… 目的Eclipse插件开发中经常要引用第三方包或者是引用其他插件中的类由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同经常导致开发过程OK一旦运行则出现NoClassDefFoundError的问题。本文的目的是全面分析各种情况下类路径的设置以避免这个问题的出现。 说明Jar包和类路径实际上是一个概念比如类com.bbebfe.Test.class打包为test.jar包添加类引用就直接添加test.jar包。而如果是添加类文件路径则添加包目录的上级目录比如lib/com/bbebfe/Test.class则添加lib文件夹而不是com文件夹。在此后的例子中都只说明Jar包的形式。 分析Eclipse插件开发对于Jar包的引用主要有三种原因 1 插件引用第三方包普通的jar包或者类文件不是插件。 a) 开发环境引用配置在prject - properties - Java build path中设置。 b) 运行环境引用配置在plugin manifest编辑器的Runtime选项卡下的classpath中添加tset.jar包的引用在MANIFEST.MF中表现为Bundle-ClassPath: lib/test.jar, 在plugin.xml表现为runtime节下的引用 i. 类文件在lib目录下如下的设置导出lib目录下所有目录 runtime library namelib/ export name*/ /library /runtime ii. test.jar在lib目录下 runtime library namelib/test.jar export name*/ /library /runtime iii. 实际上上面的设置可以简化为 runtime library namelib// /runtime 或者 runtime library namelib/test.jar/ /runtime 默认即导出lib目录下的所有包和jar下的所有包 实际上执行b)项设置后会自动执行a)项设置使开发环境和运行环境同时有效。 2 插件B引用插件工程A非Eclipse插件而是自己另外一个插件项目中的类 a) 首先必须将A中的B需要的类暴露export出来 i. 如果有MANIFEST.MF文件则表现为plugin manifest编辑器中runtime节的exported packages通过这里添加需要export的包。在manifest.mf文件中是Export-Package: com.bbebfe ii. 如果只有plugin.xml则表现为plugin manifest编辑器中runtime节的library visibility。在plugin.xml文件中表现为 runtime library export name”com.bbebfe.*”/ ... b) 在B插件工程的plugin manifest编辑器中的dependencies选项卡中添加对A插件的引用这要求运行对话框中的plugins列表的workspace plugins中必须包含A插件。 c) 如果B工程是一个RCP工程则必须在product编辑器的configuration选项卡中包含A插件工程。 3 插件B引用Eclipse插件A的类。 a) Eclipse插件中的类都是Exported因此这步省略。 b) 在B插件工程的plugin manifest编辑器中的dependencies选项卡中添加对A插件的引用这要求preferences - plugin development - target目标平台必须包含A插件且运行对话框的plugins列表中的target platform中必须选中A插件。 总结如果B插件引用的A也是一个插件则A必须出现在B插件的plugin dependencies引用中而不是其他地方否则肯定会出现运行时NoClassDefFoundError问题因此必须在plugin manifest编辑器的dependencies选项卡下进行设置。而且只需要在这里设置的设置对开发环境和运行环境同时有效 注意还有一种情况就是开发环境没有某个包或者插件而只在运行环境target中存在此时就必须设置正确的target然后按照正常程序添加插件引用但此时已经不能在plugin manifest的dependencies选项卡中设置因为在开发环境找不到这个plugin而必须在plugin.xml或MANIFEST.MF文件中手工设置。plugin只要target中存在该插件则开发和运行也不会有问题。 转载于:https://www.cnblogs.com/markjiao/archive/2008/11/28/1343362.html