文章內(nèi)容:
一. JAVA | JAVA和Kotlin混開開發(fā)的程序打包成jar方法
1.1 方法一 :IDEA中手動(dòng)打包
1.2 方法二 :build.gradle中配置后編譯時(shí)打包
二. JAVA | JAVA和Kotlin混合開發(fā)的程序打包成exe的方法
一. JAVA | JAVA和Kotlin混開開發(fā)的程序打包成jar方法
純JAVA | 純Kotlin | JAVA和Kotlin混合開發(fā)打包其實(shí)都一樣的,因?yàn)閖ar包中主要還是class文件,而kotlin在編譯后生成的也是class文件,因此不影響打包,因此以下打包jar方法適用于上述所有情況
1.1 方法一 :IDEA中手動(dòng)打包
步驟1:File --> Project Structure
步驟二:
步驟三:按以下操作后點(diǎn)Ok
說明:
- Module:這里選擇要打包的模塊,一般用gradle構(gòu)建的項(xiàng)目可以選擇
ALL Moudules
(我就是),也可以選擇main
模塊,根據(jù)需要選擇 - Main Class: 這里需要選中入口函數(shù)(也就是帶有main方法的函數(shù))
- JAR Files From librarys:這里選中第一個(gè)(extract to the target JAR — 表示把額外用到的jar包都打進(jìn)我們想要打包的jar包,即打包完之后只有一個(gè)jar包) 如果選擇第二個(gè)(copy to the output directory and link via manifest)則打包后會(huì)有多個(gè)jar包,如圖是選擇第二個(gè)打包
- Directory for META-INF/MANIFESTMF: 這里不要選擇IDEA默認(rèn)是,而是要自定義(C盤 D盤任意)
否則在運(yùn)行jar包時(shí)會(huì)報(bào)找不到主清單文件的錯(cuò)誤
步驟四:操作完點(diǎn)擊apply 再點(diǎn)擊ok
步驟五:點(diǎn)擊最上面的build --> Build Artifacts
點(diǎn)擊后會(huì)彈出以下窗口: 選擇Build即可
最后等它build完即可,就能在項(xiàng)目的out --> artifacts 下看到打包好的jar,并且在 out --> production 下看到resources文件夾
比如我的resources下面存放了image目錄圖片,那么就能看到
?。?!注意:在此處看到resources不代表resources文件夾已經(jīng)被成功打包進(jìn)jar包中了
可以使用**jar tf <jar包名稱>
**來查看jar包的結(jié)構(gòu)已經(jīng)文件 (需要在jar包的所在目錄下才可以)
例如:
這條指令對(duì)于測(cè)試jar包是否打包成功十分方便
第二種方式:build.gradle中配置,編譯時(shí)自動(dòng)打包包
配置和注釋如下:(主要參考帶有jar注釋的地方)
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.8.0'
}
group = ''
version = ''
repositories {
mavenCentral()
}
//設(shè)置編譯時(shí)的編碼
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
//設(shè)置運(yùn)行時(shí)的編碼
tasks.withType(JavaExec) {
jvmArgs('-Dfile.encoding=UTF-8')
}
/**
* 配置資源文件目錄
*/
sourceSets {
main {
resources {
srcDirs = ['src/main/resources']
}
}
}
/**
* TODO 創(chuàng)建一個(gè)新的配置,繼承至implementation
* TODO 原因 : 在打包jar時(shí) configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) } 會(huì)報(bào)錯(cuò)
*/
configurations {
deployJar
deployJar.extendsFrom(implementation)
}
/**
* 打包jar包的配置
*/
jar {
manifest {
attributes 'Main-Class' : 'net.LauncherKt' //配置jar包運(yùn)行時(shí)的入口
attributes 'Custom-Attribute': 'Custom Value' // 解決jar包運(yùn)行時(shí)沒有主清單屬性
}
// 解決jar包運(yùn)行時(shí)沒有主清單屬性
from('path/to/custom-manifest.mf')
// 將所有編譯依賴項(xiàng)打包到 JAR 文件中
from {
configurations.deployJar.collect { it.isDirectory() ? it : zipTree(it) }
}
// 將運(yùn)行時(shí)依賴項(xiàng)打包到 JAR 文件中
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
// 將資源文件一并打包到j(luò)ar包中
from sourceSets.main.resources
// 設(shè)置處理重復(fù)文件的策略
duplicatesStrategy = 'exclude'
}
dependencies {
implementation fileTree(dir: 'lib', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
只要根據(jù)上面一樣在IDEA中配置build后,一編譯就可以在build --> libs 下看到j(luò)ar文件了
如何測(cè)試打包后的jar包是否沒問題,可用指令 java -jar <jar包名>
運(yùn)行jar包, 也是需要在jar包所在目錄下執(zhí)行指令才可以,具體參考上面的 查看jar包結(jié)構(gòu)的指令使用
注意事項(xiàng):
因?yàn)槭抢胓radle打包的,因此每次打包完后如果配置發(fā)生變動(dòng),那么就一定要清除項(xiàng)目clean,再重新build (maven我不清楚),如果不clean的話就會(huì)報(bào)很多錯(cuò)誤(例如找不到什么標(biāo)識(shí)can’t resolve等各種奇怪的報(bào)錯(cuò))
操作如下:
1.點(diǎn)擊Gradle
2. 點(diǎn)擊項(xiàng)目–> Tasks --> build --> clean
3. clean后,再點(diǎn)擊build
最后等待項(xiàng)目構(gòu)建完即可。
二. JAVA | JAVA和Kotlin混合開發(fā)的程序打包成exe的方法
這個(gè)我們需要借助exe4j這個(gè)工具來打包:
官方鏈接
使用方法: 利用我們上述生成的可以正常執(zhí)行的jar包,然后這個(gè)這個(gè)exe4j 工具來打包。 操作很簡(jiǎn)單,如下:
1. welcome頁(yè)面 ,此步驟名字和密碼隨便取,證書隨便找一個(gè)即可
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不選的話,要把這個(gè)“√ ”給弄掉
5. Configure Java invocation – 配置java的執(zhí)行
第三步選中上述生成的jar包 后可以看到一下界面,然后進(jìn)行第四步
此處顯示的內(nèi)容是exe4j自動(dòng)在jar包中找到的,加入顯示一片空白,那么說明jar包打不成功(有些文件沒打進(jìn)來)
6. Configure JRE, 就是配置程序運(yùn)行的版本,這個(gè)可以結(jié)合自己程序所用的配置來配置即可,我的是1.8
注意:6這里,如果生成的exe放在沒有java環(huán)境的電腦里面,需要在6這里多使用一個(gè)操作
將環(huán)境變量JAVA_HOME給刪了
7,8直接點(diǎn)下一步即可
9. 在8這里點(diǎn)擊下一步的時(shí)候就會(huì)進(jìn)入,且還會(huì)自動(dòng)執(zhí)行
等它執(zhí)行完成后就會(huì)自動(dòng)跳到10
注意:如果此步驟報(bào)錯(cuò)那就檢查之前的步驟有沒有弄對(duì)(當(dāng)然,jar包打包不成功此處也會(huì)報(bào)錯(cuò))文章來源:http://www.zghlxwxcb.cn/news/detail-521767.html
10. 在 9 成功后就可以在剛剛配置的exe輸出的路徑中找到對(duì)應(yīng)的程序了
生成后的程序:文章來源地址http://www.zghlxwxcb.cn/news/detail-521767.html
最后: 請(qǐng)注意,如果程序中有使用資源文件resources的時(shí)候,那么在打包jar包的時(shí)候,需要把resources文件夾加入jar中。 且還要查看是否加入成功。 (可以用指令查看) ,操作請(qǐng)看上文。
如果按照上述操作后,還不能打包jar成功或者打包exe成功的讀者,可以私信把問題發(fā)給我討論討論
轉(zhuǎn)發(fā)請(qǐng)注明出處,謝謝!
到了這里,關(guān)于2023年最新IDEA中 Java程序 | Java+Kotlin混合開發(fā)的程序如何打包成jar包和exe文件(gradle版本)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!