博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小博老师解析Java核心技术 ——动态解析Jar的运用
阅读量:6991 次
发布时间:2019-06-27

本文共 1529 字,大约阅读时间需要 5 分钟。

hot3.png

[引言]

我们在学习Java编程时都知道,Java的项目发布成类型为jar的文件,如果是runnable jar文件可以直接运行。而如果是普通的jar文件,则可以引入到其他项目中重用。今天小博老师就和大家交流一下,在项目中引入其他jar文件的使用。

[步骤阅读一]预先加载到Library

这种方式相信学习了一段时间的朋友都不陌生,将现成的jar文件引入到项目的Library库中,便可以直接使用了,在框架开发的配置中尤为常见,在这里就不浪费时间再过多重复了。

但是有的时候(C/S模型项目居多),我们的项目已经发布完毕,并且已经安装到多台客户端上,这个时候我们需要对程序进行更新,那么势必需要重新编译并且发布项目,然后在每一个客户端上重新安装新的程序,这会使得我们的更新工作非常麻烦(C/S模型项目庞客户端的通病)。那么如何有效降低庞客户端的更新工作量呢?接下来小博老师就给大家介绍一种动态解析Jar的方法。

[步骤阅读二]生成Jar

通过一个简答的计算器案例,最初只有加法和减法功能,后期需要更新乘法和除法的功能,来让大家体验一下动态加载Jar的使用方法。

首先我们设计计算器中计算方法的抽象父类,核心代码如下:

package com.bwf.common;

/**

 * 计算的抽象父类

 * */

public abstract class Calculate {

protected double num1; // 参与计算的第一个数据

protected double num2; // 参与计算的第二个数据

protected String symbols; // 运算的符号

/**

 * 计算结果的抽象方法

 *  运算后的结果

 * */

public abstract double getResult();

// 省略getter和setter

}

接下来我们设计加法运算的派生实现类,核心代码如下:

package com.bwf.common.calculate.version0001;

import com.bwf.common.Calculate;

/**

 * 加法运算派生实现类

 * */

public class Addition extends Calculate{

public Addition(){

symbols = "+"; // 设置运算的符号

}

/**

 * 实现抽象超类中的抽象方法,加法运算的实现

 *  通过加法运算后的结果

 * */

public double getResult() {

return getNum1() + getNum2();

}

}

同样的方式,我们设计减法运算的派生实现类,核心代码如下:

package com.bwf.common.calculate.version0001;

import com.bwf.common.Calculate;

/**

 * 减法运算派生实现类

 * */

public class Subtraction extends Calculate{

public Subtraction(){

symbols = "-"; // 设置运算的符号

}

/**

 * 实现抽象超类中的抽象方法,减法运算的实现

 *  通过减法运算后的结果

 * */

public double getResult() {

return getNum1() - getNum2();

}

}

接下来我们把加法和乘法的实现类,发布成jar文件,放在项目中新建文件夹calculates中。

 

 

转载于:https://my.oschina.net/u/2971691/blog/820940

你可能感兴趣的文章
写给兔小白的js教程(5)
查看>>
控制层面监管(CoPP)
查看>>
kill SNIPED session
查看>>
Memcache客户端库libmemcached介绍和部署
查看>>
读书笔记15:备忘录模式
查看>>
WCF-005:关于 WCF 基础连接已经关闭 连接被意外关闭-不是使用父类指向子类问题...
查看>>
Windows Server 2008终端服务详解系列1:终端服务概述和部署
查看>>
.NET概念:消息机制
查看>>
linux新手入门-4.vi编辑器
查看>>
powershell 修改笔记本的电源设置
查看>>
数据库优化之降龙十八掌
查看>>
安装Xcache缓存加速php及ab压力测试结果
查看>>
RHEL6.3配置Apache服务器(1) 配置默认Web站点
查看>>
在AlphaGo Zero热潮下的<AI思维+设计思维>
查看>>
HOLDLOCK is not equivalent to REPEATABLE READ
查看>>
Python元组与字典
查看>>
[Linux] 文件系统
查看>>
世界級VR素材平台的機遇與挑戰
查看>>
mount failed, reason given by server: Permission denied错误处理
查看>>
Android开发实践:Java层与Jni层的数组传递
查看>>