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.

时间: 2024-07-29 19:03:35

netbeans下将所有jar包打成一个,俗称fat jar的相关文章

Maven将依赖的所有jar包打成一个jar

有些特殊情况下,需要将多个jar包打包成一个jar文件.如果使用maven可以加入如下插件: <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <!--这里要替换成jar包main方法所在类 --> <mainClass&g

java jar包打成可安装程序

1.将jar程序打成jar包 2.用exe4j.exe将jar包打成.exe可执行程序 3.用Inno Setup 编译器将.exe可执行程序编译成可安装程序 exe4j下载: https://exe4j.apponic.com/ Inno Setup下载:http://www.jrsoftware.org/isdl.php exe4j使用教程:https://blog.csdn.net/zzzgd_666/article/details/80756430 Inno Setup使用教程:http

(转)Maven依赖的jar包下载不了、jar更新不了的解决办法

场景一: 使用Maven的同学可能偶尔会遇到这种情况:pom.xml中依赖了项目需要的某个jar文件,但是使用Maven –> update project 还是没办法下载该jar到项目中,你可能需要检查本地仓库的配置,打开.m2目录下的settings.xml,配置一个中央仓库(或者你使用的jar所在的仓库地址)的镜像: <mirror> <id>mvnrepositoryMID</id> <mirrorOf>mvnrepositoryRID<

利用jar -cvf *.jar * 和直接islibrary 然后生成的jar包比较(Android中jar包封装及调用)

利用jar  -cvf  *.jar * 和直接islibrary 然后生成的jar包比较 jar  -cvf  *.jar *   会打包资源 即R.java.BuildConfing.java和MainActivity.java is  library只会把包MainActivity.java 百度:(但是还是觉得没有解决我的疑惑) 在android开发过程中,我们经常会有这种需求,自己开发一个类库jar包,提供给别人调用. 即把项目A封装成jar包,供项目B调用,而在项目B中调用项目A的a

JAVAEE 是什么,如何获取各种规范jar包及各种规范的jar包源码

1.什么是JAVA EE JAVA EE是由一系列规范组成的,规范是由JCP制定的,并且提供了参考实现.规范(Specification)是一系列接口,不包含具体实现 有以下常见的JAVA EE实现,包括JBOSS.GLASSFISH等.而tomcat是一个servlet容器,实现了servlet规范.jsp规范.但是它并没有实现EJB.JMS.JPA等规范,所以tomcat不是一个完整的JAVA EE实现 在oracle网站上,下载JAVA EE SDK时,会同时下载GLASSFISH,也就是

android 自己制作Jar包 和 修改 现成的 Jar包文件

先看如何创建自己的 Jar 包 里面随便写个方法 public int add(int a,int b){ return (a+b); } task makeJar(type: Copy) { delete 'build/libs/TestJarV1.jar' //删除build/libs/文件夹下名字为TestJarV1.jar的jar包 from('build/intermediates/packaged-classes/release/') //从这个目录下取出默认jar包 into('b

Java axis2.jar包详解及缺少jar包错误分析

Java  axis2.jar包详解及缺少jar包错误分析 一.最小开发jar集 axis2 开发最小jar包集: activation-1.1.jar axiom-api-1.2.13.jar axiom-dom-1.2.13.jar axiom-impl-1.2.13.jar axis2-adb-1.6.2.jar axis2-adb-codegen-1.6.2.jar axis2-codegen-1.6.2.jar axis2-java2wsdl-1.6.2.jar axis2-kerne

项目jar包管理,使用 .userlibraries 文件增加jar包的可移植性,明确jar包依赖,多项目共用jar包里

当一个普通的项目,在不适用maven 等jar包管理工具的时候,通常我都会直接把jar 包复制lib下,并且在build path 中直接添加额外jar包,或者使用user_libraries包所用的jar包 都放到一个文件夹里,然后让项目依赖该user_libraries 包.如果我又新建了一个项目,但是只有部分jar 包不一样或者版本不一样,通常我会再次新建一个文件夹把这些jar 放进去, 如果jar包出现问题我要一个个去翻看lib下的文件,看着很不方便,也不方便管理. 有没有像maven

Maven把项目依赖的所有jar包都打到同一个jar中

目录 1 使用maven-shade-plugin 2 推荐: 使用maven-assembly-plugin 3 扩展: Maven安装本地jar包到本地仓库 4 扩展: 手动生成jar包 5 扩展: Linux下运行jar包的几种方式 5.1 阻塞式方式 5.2 后台运行方式 5.3 后台持续运行方式 5.4 其他命令扩展 1 使用maven-shade-plugin (1) 在项目的pom.xml文件中加入如下插件: <build> <plugins> <!-- Mav