您的位置 首页 > 数码极客

〈java程序如何生成jar〉java如何随机生成!

默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的META-INF文件,将无法看到Main-Class一行)。

用maven打包java程序,当执行 java -jar 文件时提示 no main manifest attribute。
为了生成可执行的jar文件,需要借助插件。

目录:



生成示例项目

# 进入你想创建项目的父文件夹 cd /Volumes/RamDisk # 查看当前文件夹 pwd# 生成项目 docker run -itd --rm --name maven_quick_tmp \ -v "$HOME/.m2/repository":/root/.m2/repository \ -v "$PWD":/usr/src/mymaven \ -w /usr/src/mymaven \ virhuiai/maven_quick:version-aliyun \ mvn archetype:generate \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DinteractiveMode=false \ -DarchetypeVersion=1.4 \ -DgroupId=com.vir \ -DartifactId=hello-world \ -DpackageName=com.vir \ -DarchetypeVersion=RELEASE

查看下生成的项目结构:

tree -C hello-world


其中的部分如下:


如果要指定版本号,即将jdk版本替换为1.8:

cd hello-world/ sed -ri -e 's!<maven.com;1.7</maven.com;!<maven.com;1.8</maven.com;!g' sed -ri -e 's!<maven.com;1.7</maven.com;!<maven.com;1.8</maven.com;!g'

方法一:maven-shade-plugin

官网地址在:


按说明,在中添加以下内容:

<build> 。。。 <pluginManagement> 。。。 </pluginManagement> <plugins> <plugin> <groupId>org.a;/groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.a;> <mainClass>com.vir.App</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>

注意这是直接位于build>plugins下的,不是pluginManagement里的,否则不会有效果()。
现在执行mvn clean install:

mvn clean install


其中有句:

Replacing /usr/src/mymaven/hello-world/targe with /usr/src/mymaven/hello-world/targe

说明已经被替换成带有Main-Class信息的可运行jar。

现在,在项目根目录中执行该jar文件:

root@9275e11b3f0f:/usr/src/mymaven/hello-world# java -jar /usr/src/mymaven/hello-world/targe Hello World!

方法二:maven-jar-plugin

<plugin> <groupId>org.a;/groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.vir.App</mainClass> <!-- //主程序入口类,可以按住control,单机定位到该类--> </manifest> </archive> </configuration> </plugin>

注意这也是直接位于build>plugins下的,不是pluginManagement里的,pluginManagement指定版本号。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“java程序如何生成jar,java如何随机生成,Java程序如何生成apk,java程序如何生成.class文件,如何把java程序生成exe文件”边界阅读