赞
踩
把外包jar的信息写在配置文件中,这样如果外部jar改变了,只需要修改properties相应的配置即可。
config.properties文件内容如下
- jarUrl=E:/MessageSend.jar
- className=org.linewell.message.MessageSend
- methodName=sendMessage
获取conf.properties的方法如下:
- private static Properties props;
- //静态代码块
- static{
- loadProps();
- }
- /*
- *把properties文件加载进来
- */
- private synchronized static void loadProps() {
- props = new Properties();
- FileInputStream in = null;
- try {
- in = new FileInputStream(new File("E:/config.properties"));
- props.load(in);
- } catch (FileNotFoundException e) {
-
- } catch (IOException e) {
-
- } finally {
- try {
- if(null != in) {
- in.close();
- }
- } catch (IOException e) {
-
- }
- }
- }
-
- /*
- *通过传入key值获取对应value
- */
- public static String getProperty(String key){
- if(null == props) {
- loadProps();
- }
- return props.getProperty(key);
- }
通过反射的方式去实例外部jar的类并且调用方法:
- /*
- *调用外部方法并传值
- */
- public static void send(ArrayList<String> arr, String str) {
- try {
- File file=new File(getProperty("jarUrl"));
- URL url=file.toURI().toURL();//获得jar地址
- ClassLoader loader=new URLClassLoader(new URL[]{url});//获得类加载器
- Class<?> cls;
- cls = loader.loadClass(getProperty("className"));//加载外部类
- Object obj=cls.newInstance();//实例化
- Method method=cls.getMethod(getProperty("methodName"),ArrayList.class,String.class);//获得方法
- method.invoke(null,arr,str);//执行方法
-
- } catch (Exception e) {
-
- e.printStackTrace();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。