zoukankan      html  css  js  c++  java
  • netbeans下将全部jar包打成一个,俗称fat jar

    netbeans的java项目中。默认会将配置好的外部引用jar包,复制到dist文件夹的lib文件夹中去。假设须要公布出去。就须要将dist文件夹生成的jar和lib文件夹都拷贝出去公布,不方便。

    有非常多办法能够将全部须要的jar合成一个,俗称fat jar。

    较简单的办法是改动 build.xml文件

    注意默认的build.xml里面有一些凝视,当中有一行:

          -post-jar:                 called after JAR building  在jar编译完毕之后调用


    于是在build.xml的 project节点的最后,添加一点内容:

       <target name="-post-jar"> 
       <jar destfile="./dist/终于合成的fat_jar包.jar"> 
          <zipfileset src="./dist/lib/依赖的第三方包1.jar"/> 
          <zipfileset src="./dist/lib/依赖的第三方包2.jar"/> 
    <!--      <zipfileset src="${reference.SubProject.jar}"/>  假设依赖其它project,在此增加-->

          <!--Include the main project dist jar...standard NB var--> 
          <zipfileset src="${dist.jar}"/> 
       </jar> 
    </target> 

    然后正常使用build。clean and build功能。就会在dist文件夹下生成合成的fat jar包。

    可是直接这样生成的jar包,会出现一个问题:

    当用java -jar xxx.jar运行时,会报:

    no main manifest attribute, in xxx.jar

    因为这样打jar包。丢失了manifest信息。

    解决的方法:

    添加一些内容:在      <zipfileset src="${dist.jar}"/> 这一行以下

            <manifest >
                <attribute name="Main-Class" value="xxx.Xxx"/>
            </manifest>

    当中xxx.Xxx能够抄原生jar文件里的manifest中的Main-Class的值就可以。

    又一次Clean and Build,  all set.

  • 相关阅读:
    eclipse里maven项目An error occurred while filtering resources解决办法
    python中分页使用
    es学习
    cmdb资产管理2
    saltstack安装使用
    Django Rest Framework
    免交互批量分发公钥的实现
    单链表复制早已难不到你,但若我们再加个指针...
    面试 16:栈的压入压出队列(剑指 Offer 第 22 题)
    面试 15:顺时针从外往里打印数字(剑指 Offer 第 20 题)
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5349266.html
Copyright © 2011-2022 走看看