700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > IDEA 打包 Spring Boot Maven plugin 打包可执行 Jar 程序

IDEA 打包 Spring Boot Maven plugin 打包可执行 Jar 程序

时间:2019-08-11 03:27:15

相关推荐

IDEA 打包 Spring Boot Maven plugin 打包可执行 Jar 程序

目录

IDEA 打包 Java SE 应用为可执行 Jar 包

IDEA 打包 Java FX 应用为可执行 Jar 包

结束 jar 可执行程序

解决 "没有主清单属性" 报错

Spring Boot Maven plugin 打包应用

IDEA 打包 Java SE 应用为可执行 Jar 包

1、Java SE 项目通常会用来封装工具类,此时如果要打包(Jar包),建议使用 Maven 更加简单,本文不做描述。

2、Java SE 项目如果使用了 awt、swing,Java FX,则可以用来做GUI程序;否则可以做普通的后台程序,即不需要用户界面的程序。无论哪种都应该导出为可执行 Jar 文件,即类似 exe 程序一样,双击即可运行。

3、可执行 Jar 程序放到任何安装了Java JRE或者JDK电脑上双击都能运行

新建应用

1、classes 表示编译文件输出目录

2、lib 表示存放第三方 jar 包目录

3、config 表示资源配置文件目录

应用编码

1、程序很简单,双击 jar 运行程序时,就会自动写日志,支持用户输入命令行参数,用户输入什么,全部打印到日志文件中。

2、在线源码文件,很简单,一共三个文件:lib/china.rar · 汪少棠/material -

config\system.properties

com.wmx.utils.LogWmxUtils

com.wmx.MainApp

生成可执行文件

1、可以将此可执行 jar 文件 拷贝到任意安装了 Java 环境的电脑上运行,双击或者使用命令 java -jar china.jar 都可以,在程序已经运行的情况下,再次双击运行时,则会新开进程运行。

2、如果是双击运行,在任务管理器中看到的是 "javaw.exe" 进程,如果是 java -jar xxx.jar 命令行运行,则在任务管理器中看到的是 "java.exe" 进程。

IDEA 打包 Java FX 应用为可执行 Jar 包

新建项目

1、IDEA 新建 Java FX 应用可以参考《IDEA JavaFX 开发入门》,非常简单,此处不再累赘。

生成可执行文件

方法与上面的 Java SE 应用完全一样。

同样直接双击运行或者命令行运行都可以,可以看到窗口,也可以看到任务管理器中的 javaw.exe进程。

同样应用中可以做任意操作,如通信,网络编程,文件上传下载,UDP 监听等等,照样 mian 方法可以接收参数。

结束 jar 可执行程序

1、如果 jar 是窗口桌面程序(GUI),且除了主线程外,没有其它用户线程时,关了窗口,理论上程序也就运行完了。

2、如果 jar 是窗口程序,且除了主线程外,还有其它用户线程时,则关了窗口,任务管理器照样还能看到 javaw.exe 进程,因为还有子线程没有执行完,则只能杀进程结束程序了。

3、如果 jar 本身也不是窗口程序,则可以杀进程结束程序,即可以在任务管理器中手动结束,也可以使用 DOS 命令来杀进程,如下所示:

taskkill /f /t /im javaw.exe

4、如果是 cmd 命令行启动,且持续输出日志,则关闭 cmd 窗口,程序结束运行。

解决 "没有主清单属性" 报错

1、如果运行可执行 jar 程序出现如下报错,这通常是因为打包好的 jar 中的 xxxx.jar\META-INF\MANIFEST.MF 文件中没有自动生成程序入口类。

2、打包后的 jar 文件中必须要有 MANIFEST.MF 主清单文件,否则是无法运行的,然后打包后没有,可以自己手动新建,然后加上 Main-Class: 入口类全路径。

PS D:\wmx_projects\IDEA_workspaces\activitiFirst\out\artifacts\activitiFirst_jar> java -jar .\activitiFirst.jar.\activitiFirst.jar中没有主清单属性PS D:\wmx_projects\IDEA_workspaces\activitiFirst\out\artifacts\activitiFirst_jar>

Spring Boot Maven plugin 打包应用

1、对于 Maven 管理的 Java SE 应用,使用上面 "Java SE 应用"的方式进行打包也是可以的,然而还有更简单的方式。

2、Maven 项目推荐使用 spring-boot 的 spring-boot-maven-plugin 插件来进行打包,无论是 war 包还是 jar 包都可以一键打包。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--1、使自己的 Maven 应用依赖继承 spring-boot-starter-parent--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId></groupId><artifactId>maven-jar</artifactId><version>1.0-SNAPSHOT</version><build><!--2、添加 spring boot maven 插件--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3、为了效果明显新建一个类,代码如下:

import java.util.Scanner;import java.util.logging.Logger;public class MainApp {private static final Logger logger = Logger.getAnonymousLogger();public static void main(String[] args) {Scanner scanner = new Scanner(System.in);logger.info("程序启动,请输入留言...");String line = scanner.nextLine();while (!"exit".equals(line)) {logger.info("收到您的信息:[" + line + "]");logger.info("您可以继续输入,也可以输入 exit 进行退出.");line = scanner.nextLine();}logger.info("感谢您的来访,再见!");scanner.close();}}

4、直接双击 package 或者 install 一键打包即可:

5、神奇的是它不仅可以自动将第三方的依赖全部一并打包,还会自动生成 META-INF/MANIFEST.MF 主清单文件,此例它的内容生成如下:

Manifest-Version: 1.0Implementation-Title: maven-jarImplementation-Version: 1.0-SNAPSHOTStart-Class: com.wmx.main.MainAppSpring-Boot-Classes: BOOT-INF/classes/Spring-Boot-Lib: BOOT-INF/lib/Build-Jdk-Spec: 1.8Spring-Boot-Version: 2.1.5.RELEASECreated-By: Maven Archiver 3.4.0Main-Class: org.springframework.boot.loader.JarLauncher

6、可以看出它的 Start-Class 就是程序的入口,没有这个入口类,或者没有此主清单文件,则应用无法双击或者命令行运行的。

7、注意:maven 项目在没有使用 spring boot maven 插件的情况,如果直接使用 package 打包或者 install 命令安装,它只会打包项目的自己的源码以及资源文件,对于第三方的内容并不会包含。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。