实现整个过程需要三个部分,第一就是根接口,第二是插件,第三是应用程序。这是3个java项目。

首先要下载jar包,百度搜索maven repository,然后搜索pf4j,如下图,下载第一个的相应版本就可以,我用的是1.2

然后,创建根节点项目,

package com.wgn.test1;

import ro.fortsoft.pf4j.ExtensionPoint;

/*
* 根接口,继承ExtensionPoint
* 将该项目打成jar包,放到plugin项目的lib文件夹下,然后构建配置路径
*/
public interface Testpf4j extends ExtensionPoint {
public void hello();
}

第三,创建插件项目,并将根接口项目打成jar包,放到插件项目的lib目录下,构建路径

package com.wgn.test2;

import com.wgn.test1.Testpf4j;

import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper; public class Testpf4jImpl extends Plugin { public Testpf4jImpl(PluginWrapper wrapper) {
super(wrapper);
} @Override
public void start() {
System.out.println("----------------------start");
} @Override
public void stop() {
System.out.println("----------------------stop");
} /*
* 必须添加static修饰符
*/
@Extension
public static class Testpf4jImpls implements Testpf4j { @Override
public void hello() {
System.out.println("hello world!");
} }
}

MANIFEST.MF:

Manifest-Version: 1.0
Plugin_Dependencies:
Implementation-Title: Demo Plugin #2
Implementation-Version: 1.2.0
Archiver-Version: Plexus Archiver
Built-By: root
Specification_Title: Demo Plugin #2
Implementation-Vendor-Id: com.wgn.test1.Testpf4j
Plugin-Version: 0.0.1
Plugin-Id: plugin01
Plugin-Provider: Decebal Suiu
Plugin-Class: com.wgn.test2.TestPf4jImpl
Build-dk: 1.8.0_102
Specification-Version; 1.2.0

extensions.idx:

com.wgn.test2.Testpf4jImpl$Testpf4jImpls

最后,新建程序项目,将插件放入plugins目录下,根接口放入lib目录下

package com.wgn.test2;

import com.wgn.test1.Testpf4j;

import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper; public class Testpf4jImpl extends Plugin { public Testpf4jImpl(PluginWrapper wrapper) {
super(wrapper);
} @Override
public void start() {
System.out.println("----------------------start");
} @Override
public void stop() {
System.out.println("----------------------stop");
} /*
* 必须添加static修饰符
*/
@Extension
public static class Testpf4jImpls implements Testpf4j { @Override
public void hello() {
System.out.println("hello world!");
} }
}

最新文章

  1. [4]xlongwei工具类
  2. OAF屏蔽的错误
  3. CRM域用户误删恢复
  4. CentOS6部署VNC服务端
  5. 2D Tookit (一) 精灵切割
  6. HTML5全球普及加速:有望终结iOS与安卓界限【转】
  7. 转载:最小生成树-Prim算法和Kruskal算法
  8. HDU_1406 完数
  9. PM加油站
  10. 令人头痛的ExtJS日期时间控件
  11. 从BufferedImage到InputStream,实现绘图后进行下载(生成二维码图片并下载)
  12. 2014第8周三杂记及web标准学习
  13. Linux命令每日一个
  14. iOS----------Mac维修预约-如何找到电脑维修单
  15. Maven之阿里云镜像仓库配置
  16. Light OJ 1343 - Aladdin and the Black Stones
  17. vscode设置python3.7调试环境(已更新)
  18. MFC 编辑框输入16进制字符串转换为16进制数或者10进制数据计算
  19. Python包的相对导入时出现问题解决
  20. 【XSY2787】Mythological VII 贪心

热门文章

  1. Solaris Tips: Repairing the Boot Archive (ZT)
  2. leetcode458
  3. Android 使用SWIG生成Jni代码<转>
  4. apache server和tomcat集群配置二:垂直负载
  5. sql基本查询语句练习
  6. js面试题知识点全解(一作用域)
  7. eclipse格式化代码模板
  8. 面试题:3年工作经验 已看1 有用 memcache和redis有什么区别
  9. hibernate里的实体类中不能重写toString
  10. 算法Sedgewick第四版-第1章基础-005一封装输入(可以文件,jar包里的文件或网址)