美文网首页
java客户端引入第三方包方法

java客户端引入第三方包方法

作者: 阿三君 | 来源:发表于2017-10-15 17:55 被阅读0次

将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){
        Map<String,String>userInfo=new HashMap<String,String>();
        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客户端引入第三方包方法

      本文链接:https://www.haomeiwen.com/subject/byecuxtx.html