2023年最新IDEA中 Java程序 | Java+Kotlin混合开发的程序如何打包成jar包和exe文件(gradle版本)

news/2024/5/20 5:02:06 标签: java, kotlin, gradle, IDEA打包jar, java程序打包成exe

文章内容:

一. JAVA | JAVA和Kotlin混开开发的程序打包成jar方法
1.1 方法一 :IDEA中手动打包
1.2 方法二 :build.gradle中配置后编译时打包
二. JAVA | JAVA和Kotlin混合开发的程序打包成exe的方法

一. JAVA | JAVA和Kotlin混开开发的程序打包成jar方法

纯JAVA | 纯Kotlin | JAVA和Kotlin混合开发打包其实都一样的,因为jar包中主要还是class文件,而kotlin在编译后生成的也是class文件,因此不影响打包,因此以下打包jar方法适用于上述所有情况

1.1 方法一 :IDEA中手动打包

步骤1:File --> Project Structure

在这里插入图片描述

步骤二:

在这里插入图片描述

步骤三:按以下操作后点Ok

在这里插入图片描述
说明:

  1. Module:这里选择要打包的模块,一般用gradle构建的项目可以选择ALL Moudules(我就是),也可以选择main模块,根据需要选择
  2. Main Class: 这里需要选中入口函数(也就是带有main方法的函数)
    在这里插入图片描述
  3. JAR Files From librarys:这里选中第一个(extract to the target JAR — 表示把额外用到的jar包都打进我们想要打包的jar包,即打包完之后只有一个jar包) 如果选择第二个(copy to the output directory and link via manifest)则打包后会有多个jar包,如图是选择第二个打包
    在这里插入图片描述
  4. Directory for META-INF/MANIFESTMF: 这里不要选择IDEA默认是,而是要自定义(C盘 D盘任意) 否则在运行jar包时会报找不到主清单文件的错误

步骤四:操作完点击apply 再点击ok

在这里插入图片描述

在这里插入图片描述

步骤五:点击最上面的build --> Build Artifacts

在这里插入图片描述
点击后会弹出以下窗口: 选择Build即可
在这里插入图片描述
最后等它build完即可,就能在项目的out --> artifacts 下看到打包好的jar,并且在 out --> production 下看到resources文件夹
在这里插入图片描述
比如我的resources下面存放了image目录图片,那么就能看到
在这里插入图片描述
!!!注意:在此处看到resources不代表resources文件夹已经被成功打包进jar包中了
可以使用**jar tf <jar包名称>**来查看jar包的结构已经文件 (需要在jar包的所在目录下才可以)
例如:
在这里插入图片描述
在这里插入图片描述
这条指令对于测试jar包是否打包成功十分方便

gradle_41">第二种方式:build.gradle中配置,编译时自动打包包

配置和注释如下:(主要参考带有jar注释的地方)

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.8.0'
}

group = ''
version = ''

repositories {
    mavenCentral()
}
//设置编译时的编码
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}
//设置运行时的编码
tasks.withType(JavaExec) {
    jvmArgs('-Dfile.encoding=UTF-8')
}
/**
 * 配置资源文件目录
 */
sourceSets {
    main {
        resources {
            srcDirs = ['src/main/resources']
        }
    }
}
/**
 * TODO 创建一个新的配置,继承至implementation
 * TODO 原因 : 在打包jar时  configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) } 会报错
 */
configurations {
    deployJar
    deployJar.extendsFrom(implementation)
}
/**
 * 打包jar包的配置
 */
jar {
    manifest {
        attributes 'Main-Class' : 'net.LauncherKt' //配置jar包运行时的入口
        attributes 'Custom-Attribute': 'Custom Value' // 解决jar包运行时没有主清单属性
    }
    // 解决jar包运行时没有主清单属性
    from('path/to/custom-manifest.mf')
    // 将所有编译依赖项打包到 JAR 文件中
    from {
        configurations.deployJar.collect { it.isDirectory() ? it : zipTree(it) }
    }

    // 将运行时依赖项打包到 JAR 文件中
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    // 将资源文件一并打包到jar包中
    from sourceSets.main.resources
    // 设置处理重复文件的策略
    duplicatesStrategy = 'exclude'
}


dependencies {
    implementation fileTree(dir: 'lib', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

}

只要根据上面一样在IDEA中配置build后,一编译就可以在build --> libs 下看到jar文件了

如何测试打包后的jar包是否没问题,可用指令 java -jar <jar包名> 运行jar包, 也是需要在jar包所在目录下执行指令才可以,具体参考上面的 查看jar包结构的指令使用

注意事项:

因为是利用gradle打包的,因此每次打包完后如果配置发生变动,那么就一定要清除项目clean,再重新build (maven我不清楚),如果不clean的话就会报很多错误(例如找不到什么标识can’t resolve等各种奇怪的报错)
操作如下:

1.点击Gradle

在这里插入图片描述

2. 点击项目–> Tasks --> build --> clean

在这里插入图片描述

3. clean后,再点击build

在这里插入图片描述
最后等待项目构建完即可。

二. JAVA | JAVA和Kotlin混合开发的程序打包成exe的方法

这个我们需要借助exe4j这个工具来打包:
官方链接

使用方法: 利用我们上述生成的可以正常执行的jar包,然后这个这个exe4j 工具来打包。 操作很简单,如下:

1. welcome页面 ,此步骤名字和密码随便取,证书随便找一个即可

A-XVK258563F-1p4lv7mg7sav
A-XVK209982F-1y0i3h4ywx2h1
A-XVK267351F-dpurrhnyarva
A-XVK204432F-1kkoilo1jy2h3r

在这里插入图片描述

2.Choose project type — 此步骤选择 “JAR in EXE” mode

在这里插入图片描述

3. Configure application,配置生成的exe文件

在这里插入图片描述

4. Configure executable ,跟下图一样配置即可,如果icon不选的话,要把这个“√ ”给弄掉

在这里插入图片描述

java_148">5. Configure Java invocation – 配置java的执行

在这里插入图片描述
在这里插入图片描述
第三步选中上述生成的jar包 后可以看到一下界面,然后进行第四步
在这里插入图片描述
在这里插入图片描述
此处显示的内容是exe4j自动在jar包中找到的,加入显示一片空白,那么说明jar包打不成功(有些文件没打进来)

6. Configure JRE, 就是配置程序运行的版本,这个可以结合自己程序所用的配置来配置即可,我的是1.8

在这里插入图片描述
注意:6这里,如果生成的exe放在没有java环境的电脑里面,需要在6这里多使用一个操作

在这里插入图片描述
将环境变量JAVA_HOME给删了

7,8直接点下一步即可

9. 在8这里点击下一步的时候就会进入,且还会自动执行

在这里插入图片描述
等它执行完成后就会自动跳到10
注意:如果此步骤报错那就检查之前的步骤有没有弄对(当然,jar包打包不成功此处也会报错)

10. 在 9 成功后就可以在刚刚配置的exe输出的路径中找到对应的程序了

在这里插入图片描述
生成后的程序:
在这里插入图片描述

最后: 请注意,如果程序中有使用资源文件resources的时候,那么在打包jar包的时候,需要把resources文件夹加入jar中。 且还要查看是否加入成功。 (可以用指令查看) ,操作请看上文。

如果按照上述操作后,还不能打包jar成功或者打包exe成功的读者,可以私信把问题发给我讨论讨论

转发请注明出处,谢谢!


http://www.niftyadmin.cn/n/1007924.html

相关文章

c++ 内存管理一:初识内存分配工具

文章目录 前言1 new 和 delete2 new[]和delete[]3 operator new4 placement new5 malloc和free6 allocator 前言 侯捷 c内存管理学习总结笔记。 在C中&#xff0c;有几种常用的内存分配工具可以帮助进行动态内存管理。 从c应用程序自上而下&#xff0c;通常会有这样的几种分配…

MATLAB Onramp

目录 任务 音频频率 以表的形式导入数据 循环 恒星运动 知识点摘要 任务 您可以按键盘上的向上箭头键重新调用以前的命令。请注意&#xff0c;要执行此操作&#xff0c;命令行窗口必须为活动窗口。 按向上箭头键以回到命令 m3*5&#xff0c;然后将该命令编辑为 m3*k cle…

【Python百日进阶-Web开发-Peewee】Day253 - Peewee 主键、复合主键等

文章目录 7.5 主键、复合键和其他技巧7.5.1 非整数主键7.5.2 复合主键7.5.3 手动指定主键7.5.4 没有主键的模型 7.6 自引用外键7.7 循环外键依赖 7.5 主键、复合键和其他技巧 AutoField用于标识自增整数主键。如果不指定主键&#xff0c;Peewee 会自动创建一个名为“id”的自增…

【夏虫语冰】Office操作技巧汇总

文章目录 1、Word技巧1.1 添加题注 2、Visio技巧2.1 快捷键2.2 格式刷 结语 1、Word技巧 1.1 添加题注 在 Word 中添加、删除标题或设置其格式&#xff1a; 可以为图表、公式或其他对象添加题注。 题注是带编号的标签&#xff0c;可将其添加到图表、表格、公式或其他对象。 …

设计、创建和维护索引(index)(下)以SQL Server数据库为例

设计、创建和维护索引(index)&#xff08;下&#xff09; 11:索引的维护操作: 12:索引的评估和分析: 13:为计算字段创建索引: 14:为视图创建索引: 15:索引优化向导. K:索引的维护 你创建了一个索引之后,用户可能要对表进行修改,而为了让索引能发挥它的最大用途,必须对它进行维…

100种思维模型之奥卡姆剃刀思维模型-87

Everything should be made as simple as possible, but not simpler &#xff08;凡事都应当尽可能地简单&#xff0c;而不是较为简单&#xff09;——爱因斯坦。 以上&#xff0c;爱因斯坦说的话其实是 奥卡姆剃刀定律 的延伸&#xff0c;即 “如无必要&#xff0c;勿增实…

python 使用上级目录的文件(相对路径,绝对路径)

Python功能点实现&#xff1a;多方法访问上级目录中的文件 - 简书 1. 相对路径 ../ ../csv/test/b.txt 2. 绝对路径 from os.path import dirname, abspath dirname(dirname(abspath(__file__))) /b.txt # b.txt是要定位的文件位置

chatgpt赋能python:在Python官网上下载Python:一位有10年Python编程经验的工程师分享

在Python官网上下载Python&#xff1a;一位有10年Python编程经验的工程师分享 Python是如今最受欢迎的编程语言之一。它是一种易学易用、具有广泛用途的开源语言。如果您刚开始使用Python&#xff0c;或者想要更新到最新版本的Python&#xff0c;Python官网是一个很好的起点。…