java第三方包_java客户端引入第三方包方法
将java作为客户端运行(即通过java -jar client.jar方式运行),如有引用第三方jar包,不作特殊处理是无法正确运行,会抛出ClassNotFoundException异常。
如以下代码引用fastjson包
package asan.demo.client;
import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;
public class Client {
public Client() {
super();
}
public static void main(String[]cmd){
MapuserInfo=new HashMap();
userInfo.put("name", "jianfeng");
userInfo.put("company", "definesys");
userInfo.put("email", "jianfeng.zheng@definesys.com");
String json=JSON.toJSONString(userInfo);
System.out.println(json);
}
}
直接打包运行,报以下错误
通过MF文件引入方式
标准的jar包都有一个MF文件,该文件路径为META-INF\MANIFEST.MF,可以将jar包解压查看该文件,MF文件主要用来描述jar一些基本信息,如版本,作者,主类路径等。
如以上代码打包后MF文件内容如下:
这里信息较少,只有版本和主类信息。注意,注意,这里总共有4行,MF文件结尾必须要有两行空白行。
创建目录lib该目录和客户端在同一个路径下,将引用的jar包复制到lib目录下,如图
QQ20171015-173220@2x.png
在MF文件中增加一行(可以用压缩软件打开jar编辑推荐使用7-Zip)
Class-Path: ./lib/fastjson-1.2.4.jar
如有多个jar包引用空格隔开
Class-Path: ./lib/fastjson-1.2.4.jar ./lib/gson-2.2.4.jar
有两个地方需要注意
Class-Path后面是英文冒号,并且冒号后面有个空格
必须保证MF文件最后有两行空格
这样就可以正常运行了。
通过jar命令
将所有jar包包括客户端放到同一目录下,分别用jar命令解压到当前目录,客户端最后解压(避免MF文件被覆盖)
jar -xvf fastjson-1.2.4.jar
jar -xvf Client.jar
解压后的文件结构如图
将所有的jar文件删除后执行以下命令重新打包
jar -cvfM Client.jar *
重新打包后的jar就可以正常运行
最后
两种方式各有利弊,MF方式第三方jar包更新无需重新打包,jar打包方式交付的时候只要一个jar包就够了,但第三方包更新需要重新打包。
java第三方包_java客户端引入第三方包方法相关推荐
- java做服务器端给客户端传数据包_java 服务器怎样给客户端传输数据
展开全部 服务器端源码: import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExceptio ...
- java开发常用jar包_java开发常用jar包
mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.ja ...
- java qq登录_JAVA实现QQ第三方登录
首先在QQ互联: https://connect.qq.com/manage.html 申请账号,并且进行资料审核,同时创建应用(设置回调地址) 申请应用完后,会有app_ID.app_KEY等参数 ...
- java中缺省包_Java 中的默认包问题
起因 今天看< Java 编程思想>第六章的时候看到这样一句话: 一定要记住,相同目录下的所有不具有明确 package 声明的文件,都被视作是该目录下默认包的一部分. 以前没有深入了解过 ...
- java 不同包_Java项目中不同包的命名及作用
①在vo或者domain包中定义bean类,主要是类的属性,这个类跟数据库中的某个表的字段一致. ②dao包中主要是存放用于操作数据库完成业务逻辑方法的接口. ③dao.impl这个包存放着这样的一个 ...
- golang mod 包管理使用 引入本地包
对于多个项目来说,把所有的源码都放在GOPATH下的src目录下非常的不方便.golang给我们提供了一个叫go mod的命令来脱离src目录,方便我们管理go项目. 对于windows用户来说,使用 ...
- 命令启动jar包_java项目打jar包,一句命令搞定
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名 其中{ctxu}这四个参数必须选选其一. [v f m e 0 M i ]是可选参数,文件名也是必须 ...
- java 心跳程序_Java实现心跳机制的方法
一.心跳机制简介 在分布式系统中,分布在不同主机上的节点需要检测其他节点的状态,如服务器节点需要检测从节点是否失效.为了检测对方节点的有效性,每隔固定时间就发送一个固定信息给对方,对方回复一个固定信息 ...
- java拆分日期_java实现日期拆分的方法
java实现日期拆分的方法 本文实例讲述了java实现日期拆分的方法.分享给大家供大家参考.具体如下: 如:计算6-1至6-5之间的日期天数及具体日期,预期的结果是得到: 6-1 6-2 6-3 6- ...
最新文章
- TensorFlow与PyTorch之争,哪个框架最适合深度学习
- 讯飞智慧餐厅(安徽赛区)比赛通知
- curl 忽略证书访问 https
- java好还是python好-Python和Java哪个薪资更高、远景更好?
- m4a打开服务器运行失败,WINCC打不开项目,服务器运行失败
- windows服务器apache+PHP+Mysql
- java学习(33):巩固练习
- LeetCode 1790. 仅执行一次字符串交换能否使两个字符串相等
- IOC操作Bean管理XML方式(注入内部 bean 和 级联赋值)
- java jdbc dao_Java自学-JDBC DAO
- 【问题解决方案】The MathType Dll cannot be found 问题解决方案
- [礼仪大赛常识]酒店客房服务礼仪
- dede采集-织梦全自动采集插件-织梦免费采集插件
- 作为产品经理为什么选择开源GIS
- HTTP请求返回415错误解决办法
- php如何批量发送短信,如何在php中运行批量短信api [关闭]
- 使用Python和selenium的Chromedriver模拟登陆爬取网站信息(beautifulsoup)
- MySQL--SQL执行顺序详解
- Messaging——WebSocket
- 网络 · IPv4协议