打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何在插件开发中正确使用第三方jar包

如何在插件开发中正确使用第三方jar包

问题描述
  很多开发人员在eclipse插件开发中,经常会遇到第三方jar包无法访问的问题,或者是明明在开发环境中一切正常,导出插件到了运行环境时却出现"NoClassDefFoundError"异常等诸多问题。

  本文结合笔者插件开发遇到的问题,谈谈插件开发过程中应该如何正确配置第三方jar包。

解决过程
在一般插件项目中添加第三方jar包:
  1. 创建你的插件项目,并新建一个文件夹放置你需要的第三方jar包,如:<project>/lib。

  2. 从文件系统中导入或拷贝jar包至<project>/lib文件夹中,如:<project>/lib/activation.jar。

  3. 打开MANIFEST.MF文件,在插件编辑器的"Runtime"Tab页中,把第三方jar包添加到"Classpath"面板中。


4. 如果该插件需要被其他插件依赖,则需要在插件编辑器的"Runtime"Tab页中,在"Exported Packages"面板中添加所有允许访问的包。


通过图形界面编辑器配置后的MANIFEST.MF文件如下:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Primeton Studio EosTest Core Plug-in
Bundle-SymbolicName: com.primeton.studio.eostest.core
Bundle-Version: 6.0.0
Bundle-Vendor: %Primeton
Bundle-Localization: plugin
Bundle-ClassPath: lib/activation.jar,
lib/jaxb-api.jar,
lib/jaxb-impl.jar,
lib/jsr173_1.0_api.jar
Export-Package: com.primeton.studio.eostest.core,
com.primeton.studio.eostest.core.model.cut,
...
javax.activation,
javax.xml.bind,
javax.xml.bind.annotation,
javax.xml.bind.annotation.adapters,
javax.xml.bind.attachment,
javax.xml.bind.helpers,
javax.xml.bind.util,
javax.xml.stream,
javax.xml.stream.events,
javax.xml.stream.util
Require-Bundle: com.primeton.studio.runtime,
org.eclipse.core.resources


构建插件项目:
5. 打开build.properties文件,在插件编辑器的"Build"Tab页的"Binary Build"面板中,选中需要构建的内容。




生成的build.properties文件如下:

output.. = bin/
bin.includes = META-INF/,\
               plugin.xml,\
               lib/jaxb-api.jar,\
               lib/jaxb-impl.jar,\
               lib/jsr173_1.0_api.jar,\
               lib/activation.jar,\
               plugin.properties,\
               plugin_zh_CN.properties
src.includes = META-INF/,\
               src/,\
               plugin.properties,\
               plugin.xml,\
               plugin_zh_CN.properties,\
               build.properties




在插件项目B中引用一个插件项目A的类:
  6. 首先,需要保证该类所在的包在插件A的MANIFEST.MF文件Export-Package:中,如上步骤4。

  7. 其次,打开插件项目B的MANIFEST.MF文件,在插件编辑器的"Dependencies"Tab页中,把插件项目A添加到"Required Plug-ins"面板中。如果仅仅是在插件项目B的"Java Build Path"添加了插件项目A,则运行时肯定会出现运行时"NoClassDefFoundError"问题。





导出插件项目:
  8. 选中插件项目,在导出向导里选中"Deployable plug-ins and fragments"选项导出。

  

  9. 导出的插件分为三种形式,文件夹、zip包、jar包。导出的内容包括在上面插件项目构建步骤中,build.properties文件bin.includes中选中的内容。

  

  10. 其中jar包的形式需要在"Options"选项里选中"Package plug-ins as individual JAR archives"选项。

  




将第三方jar包单独包装成一个插件项目:
  另外对于项目中使用到大量的第三方jar包时,可以采用eclipse官方推荐的方式,把第三方jar单独包装成一个插件项目。

  按Ctrl+N,在新建对话框里选择"Plug-in from existing JAR archives",按下一步选择你需要的jar文件。

  

  再下一步指定这个plugin的名称,注意这一步里一般要把最下面的"Unzip the JAR archives into the project"选项清除,否则eclipse会把jar文件全部展开为.class文件树,最后按Finish就可以了。

  



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在rcp中使用第三方jar
jar参数运行应用时classpath的设置方法
Java学习 如何扩展加载Jar包?
Maven学习 (四) 使用Nexus搭建Maven私服
java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)
如何使用EclipseLink使PostgreSQL与OSGi一起工作
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服