美文网首页
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