jar包转化成可执行exe

jar包转exe文件

环境要求

  • jdk17下载安装
  • 开通.Net Framework 3.5.1
    • 在Windows控制面板的 程序点击启用和关闭Windows功能
    • 勾选.Net Framework 3.5.1(包括.Net 2.0和3.0),点击确定,再点击同意下载
    • 等待自动下载并安装完成
  • wix3下载安装

jpackage

示例

.\jpackage -t exe ^
-i jar包文件夹路径 ^
-n 应用名称 ^
--main-jar 可执行jar包 ^
--icon 应用图标路径
--app-version 应用版本号
--vendor 应用供应商名称 ^
--dest 输出目录
--verbose ^
--win-console ^
--win-dir-chooser ^
--win-shortcut
  • --verbose:启用详细输出
  • --win-console:为应用程序创建控制台启动程序,应当为需要控制台交互的应用程序指定
  • --win-dir-chooser:添加一个对话框,使用户能够选择产品的安装位置
  • --win-shortcut:请求为此应用程序添加桌面快捷方式

jpackage -h

用法:jpackage <options>

示例用法:
--------------
    生成适合主机系统的应用程序包:
        对于模块化应用程序:
            jpackage -n name -p modulePath -m moduleName/className
        对于非模块化应用程序:
            jpackage -i inputDir -n name \
                --main-class className --main-jar myJar.jar
        从预构建的应用程序映像:
            jpackage -n name --app-image appImageDir
    生成应用程序映像:
        对于模块化应用程序:
            jpackage --type app-image -n name -p modulePath \
                -m moduleName/className
        对于非模块化应用程序:
            jpackage --type app-image -i inputDir -n name \
                --main-class className --main-jar myJar.jar
        要为 jlink 提供您自己的选项,请单独运行 jlink:
            jlink --output appRuntimeImage -p modulePath -m moduleName \
                --no-header-files [<additional jlink options>...]
            jpackage --type app-image -n name \
                -m moduleName/className --runtime-image appRuntimeImage
    生成 Java 运行时程序包:
        jpackage -n name --runtime-image <runtime-image>

一般选项:
  @<filename>
          从文件读取选项和/或模式
          可以多次使用此选项。
  --type -t <type>
          要创建的程序包的类型
          有效值为:{"app-image", "exe", "msi"}
          如果未指定此选项,则将创建与平台相关的
          默认类型。
  --app-version <version>
          应用程序和/或程序包的版本
  --copyright <copyright string>
          应用程序的版权
  --description <description string>
          应用程序的说明
  --help -h
          将用法文本输出到输出流并退出,用法文本中包含
          适用于当前平台的每个有效选项的列表和说明
  --name -n <name>
          应用程序和/或程序包的名称
  --dest -d <destination path>
          用来放置所生成的输出文件的路径
          默认为当前的工作目录。
          (绝对路径或相对于当前目录的路径)
  --temp <file path>
          用来创建临时文件的新目录或空白目录的路径
          (绝对路径或相对于当前目录的路径)
          如果指定,则在任务完成时将不删除临时目录,
          必须手动删除临时目录
          如果未指定,则将创建一个临时目录,
          并在任务完成时删除该临时目录。
  --vendor <vendor string>
          应用程序的供应商
  --verbose
          启用详细的输出
  --version
          将产品版本输出到输出流并退出

用来创建运行时映像的选项:
  --add-modules <模块名称>[,<模块名称>...]
          要添加的模块的逗号 (",") 分隔列表。
          此模块列表连同主模块(如果指定)
          将作为 --add-module 参数传递到 jlink。
          如果未指定,则仅使用主模块(如果指定了 --module),
          或者使用默认的模块集(如果指定了
          --main-jar)。
          可以多次使用此选项。
  --module-path -p <module path>...
          路径的 ; 分隔列表
          每个路径要么是模块的目录,要么是
          模块 jar 的路径。
          (每个路径可以是绝对路径,也可以是相对于当前目录的路径)
          可以多次使用此选项。
  --bind-services
          将 --bind-services 选项传递到 jlink(将在服务
          提供商模块及其被依赖对象中进行链接)
  --runtime-image <file path>
          将复制到应用程序映像的预定义
          运行时映像的路径
          (绝对路径或相对于当前目录的路径)
          如果未指定 --runtime-image,jpackage 将运行 jlink 以
          使用如下选项创建运行时映像:
          --strip-debug、--no-header-files、--no-man-pages 和
          --strip-native-commands。

用来创建应用程序映像的选项:
  --icon <icon file path>
          应用程序包图标的路径
          (绝对路径或相对于当前目录的路径)
  --input -i <input path>
          包含要打包的文件的输入目录的路径
          (绝对路径或相对于当前目录的路径)
          输入目录中的所有文件将打包到
          应用程序映像中。

用来创建应用程序启动程序的选项:
  --add-launcher <launcher name>=<file path>
          启动程序的名称和包含关键字-值对列表的
          属性文件的路径
          (绝对路径或相对于当前目录的路径)
          可以使用关键字 "module"、"main-jar"、"main-class"、
          "arguments"、"java-options"、"app-version"、"icon" 和
          "win-console"。
          这些选项将添加到原始命令行选项中或者用来覆盖
          原始命令行选项,以构建额外的替代启动程序。
          将从命令行选项构建主应用程序启动程序。
          可以使用此选项构建额外的替代启动程序,
          可以多次使用此选项来构建
          多个额外的启动程序。
  --arguments <main class arguments>
          在没有为启动程序提供命令行参数时,
          要传递到主类的命令行参数
          可以多次使用此选项。
  --java-options <java options>
          要传递到 Java 运行时的选项
          可以多次使用此选项。
  --main-class <class name>
          要执行的应用程序主类的限定名称
          只有在指定了 --main-jar 时才能使用此选项。
  --main-jar <main jar file>
          应用程序的主 JAR;包含主类
          (指定为相对于输入路径的路径)
          可以指定 --module 或 --main-jar 选项,但是不能同时指定
          这两个选项。
  --module -m <module name>[/<main class>]
          应用程序的主模块(以及可选的主类)
          此模块必须位于模块路径中。
          如果指定了此选项,则将在 Java 运行时映像中
          链接主模块。可以指定 --module 或 --main-jar 选项,
          但是不能同时指定这两个选项。

用来创建应用程序启动程序的与平台相关的选项:
  --win-console
          为应用程序创建控制台启动程序,应当为
          需要控制台交互的应用程序指定

用来创建应用程序包的选项:
  --app-image <file path>
          用来构建可安装程序包的
          预定义应用程序映像的位置
          (绝对路径或相对于当前目录的路径)
  --file-associations <file path>
          包含关键字-值对列表的属性文件的路径
          (绝对路径或相对于当前目录的路径)
          可以使用关键字 "extension"、"mime-type"、"icon" 和 "description"
          来描述此关联。
          可以多次使用此选项。
  --install-dir <file path>
          默认安装位置下面的相对子路径
  --license-file <file path>
          许可证文件的路径
          (绝对路径或相对于当前目录的路径)
  --resource-dir <path>
          覆盖 jpackage 资源的路径
          可以通过向该目录中添加替代资源来覆盖 jpackage 的
          图标、模板文件和其他资源。
          (绝对路径或相对于当前目录的路径)
  --runtime-image <file-path>
          要安装的预定义运行时映像的路径
          (绝对路径或相对于当前目录的路径)
          在创建运行时程序包时需要使用选项。

用来创建应用程序包的与平台相关的选项:
  --win-dir-chooser
          添加一个对话框以允许用户选择
          产品的安装目录
  --win-menu
          将该应用程序添加到系统菜单中
  --win-menu-group <menu group name>
          启动该应用程序所在的菜单组
  --win-per-user-install
          请求基于每个用户执行安装
  --win-shortcut
          为应用程序创建桌面快捷方式
  --win-upgrade-uuid <id string>
          与此程序包升级相关联的 UUID

package.bat

@echo off
echo 打包执行开始...
:: 是否打印台展示【0=否,1=是】
set CONSOLE_FLAG=1
:: jdk14地址
set JAVA_PATH=D:\dev\jdk-17.0.7\bin\
:: 当前文件夹
set PROJECT_FOLDER=%~dp0
:: 应用名称,不能为空
set EXE_NAME=测试打包应用
:: 应用icon名称,空为默认icon
set EXE_ICON=exe.ico
:: 应用jar,不能为空
set EXE_JAR=spring-exe2-1.0-SNAPSHOT.jar
:: 应用供应商名称
set EXE_VENDOR=
:: 应用版本
set version=1.0.0

echo 当前项目地址%PROJECT_FOLDER%

if %CONSOLE_FLAG% == 1 (
	set CONSOLE_KEY=--win-console
) 

set jarFolder=%PROJECT_FOLDER%target
if not exist %jarFolder% (
	echo %jarFolder%【文件夹不存在】
	pause
)

cd %JAVA_PATH%

jpackage -t exe -i %jarFolder% -n %EXE_NAME% --main-jar %EXE_JAR% --icon %PROJECT_FOLDER%%EXE_ICON% --app-version %version% --vendor %EXE_VENDOR% %CONSOLE_KEY% --verbose --win-dir-chooser --win-shortcut

pause

原文链接:https://www.cnblogs.com/lhns/p/17336511.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jar包转化成可执行exe - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • 常见的 JVM 性能分析工具有哪些?

    以下是关于常见的 JVM 性能分析工具的完整使用攻略: 常见的 JVM 性能分析工具 JVM 性能分析工具是用来分析 Java 程序在 JVM 上的性能表现的工具。常见的 JVM 性能分析工具包括以下几种: 1. JConsole JConsole 是 JDK 自带的一款监控工具,可以监控 JVM 的内存、线程、类、CPU 等信息。通过 JConsole,可…

    Java 2023年5月12日
    00
  • SpringBoot全局异常处理方案分享

    针对“SpringBoot全局异常处理方案分享”的完整攻略,可以从以下几个方面进行讲解: 1. 异常处理的基本概念 异常处理是指对不可预知的异常情况进行预判、捕获、记录、分析和处理的一种程序行为。在SpringBoot应用中,异常处理是非常重要的,它可以更好地保障应用的稳定性和可靠性。基本上,通过自定义异常处理器,我们可以捕获程序中未处理的异常,并统一处理异…

    Java 2023年5月27日
    00
  • SharePoint 2007图文开发教程(5) 体验Event Handler

    SharePoint 2007图文开发教程(5) 体验Event Handler 什么是Event Handler? Event Handler是指一种事件处理程序,常用于在数据更新、插入或删除等操作的过程中执行特定的操作,例如发送邮件通知、记录日志等。在SharePoint中,Event Handler被广泛应用于对列表、文档库等对象的事件进行处理。 如何…

    Java 2023年5月31日
    00
  • Spring Boot 日志配置方法(超详细)

    Spring Boot日志配置方法(超详细) Spring Boot是一个非常流行的Java开发框架,它提供了多种日志框架,包括Logback、Log4j2、Java Util Logging等。本文将详细介绍Spring Boot日志配置方法,包括配置文件、注解、代码等。 1. 配置文件 Spring Boot的日志配置文件是application.pro…

    Java 2023年5月14日
    00
  • SpringBoot前后端json数据交互的全过程记录

    SpringBoot前后端Json数据交互的全过程记录 前言 本文主要介绍SpringBoot前后端Json数据交互的全过程,包括前端发送Json数据、后端接收Json数据、后端发送Json数据、前端接收Json数据四个方面。 前端发送Json数据 前端发送Json数据主要通过Ajax来实现。以下是一个简单的Ajax请求示例: $.ajax({ url: &…

    Java 2023年5月20日
    00
  • 如何使用Java调试技术?

    下面我将为您详细讲解如何使用Java调试技术。 如何使用Java调试技术 什么是Java调试技术 Java调试技术是指利用各种工具和技术,用来检查程序运行状态和问题,并找到程序中的错误。 Java调试工具 目前常见的Java调试工具有以下几种: Eclipse IntelliJ IDEA NetBeans jdb jvisualvm jstack等 Java…

    Java 2023年5月11日
    00
  • springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)

    下面详细讲解一下如何使用Spring Boot、IDEA和Maven搭建多模块项目并连接数据库测试。 环境准备 在开始之前,确保你已经安装了以下环境: JDK 1.8或以上版本 IDEA集成开发环境 Maven构建工具 数据库(本次示例使用MySQL) 创建Maven多模块项目 打开IDEA,点击File -> New -> Project,选择…

    Java 2023年5月31日
    00
  • Java SpringBoot 集成 Redis详解

    Java SpringBoot 集成 Redis详解 在Java SpringBoot中,集成Redis缓存可以提高系统性能和可用性,本文将详细讲解Java SpringBoot集成Redis的完整攻略。 简介 什么是Redis Redis是一个高性能的键值缓存数据库,支持持久化和多种数据结构。Redis不仅支持字符串、散列、列表、集合和有序集合等数据结构,…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部