将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客户端引入第三方包方法相关推荐

  1. java做服务器端给客户端传数据包_java 服务器怎样给客户端传输数据

    展开全部 服务器端源码: import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExceptio ...

  2. java开发常用jar包_java开发常用jar包

    mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.ja ...

  3. java qq登录_JAVA实现QQ第三方登录

    首先在QQ互联: https://connect.qq.com/manage.html 申请账号,并且进行资料审核,同时创建应用(设置回调地址) 申请应用完后,会有app_ID.app_KEY等参数 ...

  4. java中缺省包_Java 中的默认包问题

    起因 今天看< Java 编程思想>第六章的时候看到这样一句话: 一定要记住,相同目录下的所有不具有明确 package 声明的文件,都被视作是该目录下默认包的一部分. 以前没有深入了解过 ...

  5. java 不同包_Java项目中不同包的命名及作用

    ①在vo或者domain包中定义bean类,主要是类的属性,这个类跟数据库中的某个表的字段一致. ②dao包中主要是存放用于操作数据库完成业务逻辑方法的接口. ③dao.impl这个包存放着这样的一个 ...

  6. golang mod 包管理使用 引入本地包

    对于多个项目来说,把所有的源码都放在GOPATH下的src目录下非常的不方便.golang给我们提供了一个叫go mod的命令来脱离src目录,方便我们管理go项目. 对于windows用户来说,使用 ...

  7. 命令启动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 ]是可选参数,文件名也是必须 ...

  8. java 心跳程序_Java实现心跳机制的方法

    一.心跳机制简介 在分布式系统中,分布在不同主机上的节点需要检测其他节点的状态,如服务器节点需要检测从节点是否失效.为了检测对方节点的有效性,每隔固定时间就发送一个固定信息给对方,对方回复一个固定信息 ...

  9. java拆分日期_java实现日期拆分的方法

    java实现日期拆分的方法 本文实例讲述了java实现日期拆分的方法.分享给大家供大家参考.具体如下: 如:计算6-1至6-5之间的日期天数及具体日期,预期的结果是得到: 6-1 6-2 6-3 6- ...

最新文章

  1. TensorFlow与PyTorch之争,哪个框架最适合深度学习
  2. 讯飞智慧餐厅(安徽赛区)比赛通知
  3. curl 忽略证书访问 https
  4. java好还是python好-Python和Java哪个薪资更高、远景更好?
  5. m4a打开服务器运行失败,WINCC打不开项目,服务器运行失败
  6. windows服务器apache+PHP+Mysql
  7. java学习(33):巩固练习
  8. LeetCode 1790. 仅执行一次字符串交换能否使两个字符串相等
  9. IOC操作Bean管理XML方式(注入内部 bean 和 级联赋值)
  10. java jdbc dao_Java自学-JDBC DAO
  11. 【问题解决方案】The MathType Dll cannot be found 问题解决方案
  12. [礼仪大赛常识]酒店客房服务礼仪
  13. dede采集-织梦全自动采集插件-织梦免费采集插件
  14. 作为产品经理为什么选择开源GIS
  15. HTTP请求返回415错误解决办法
  16. php如何批量发送短信,如何在php中运行批量短信api [关闭]
  17. 使用Python和selenium的Chromedriver模拟登陆爬取网站信息(beautifulsoup)
  18. MySQL--SQL执行顺序详解
  19. Messaging——WebSocket
  20. 网络 · IPv4协议

热门文章

  1. HDU2099 整除的尾数
  2. [转]社区运营必读之天涯志
  3. 无线ap死机无法联接服务器,无法连接无线接入点 这几步帮你轻松解决无线连接问题...
  4. 西门子PLC模拟量输入数据类型变换
  5. 专访许长敬:移动互联网将进入电子商务阶段
  6. 电脑水冷风扇转速太高怎么调?
  7. 如何判断两个QQ好友之间是否为好友关系
  8. Htmlunit模拟登陆蓝墨云
  9. KMP(b中有几个a)
  10. HarmonyOS——一个面向物联网的操作系统