將Java項(xiàng)目打包成可執(zhí)行的jar包
一、通過(guò) eclipse 自帶打包
測(cè)試項(xiàng)目:
Main.java
package com.bug; import org.junit.Test; public class Main { public static void main(String[] args) { test(); } @Test public static void test() { System.out.println("HelloWorld"); System.out.println("HelloWorld"); System.out.println("HelloWorld"); System.out.println("HelloWorld"); System.out.println("HelloWorld"); System.out.println("HelloWorld"); } }
1.右鍵項(xiàng)目文件夾,點(diǎn)擊export,選擇JAR flie點(diǎn)擊next。
2.勾選要打包的文件夾,這里只要勾選需要編譯的java文件就可以了,下面的JAR file為打包后的保存路徑和jar名稱,選擇好后點(diǎn)擊next。
Export generated class files and resources 表示只導(dǎo)出生成的.class文件和其他資源文件
Export all output folders for checked projects 表示導(dǎo)出選中項(xiàng)目的所有文件夾
Export java source file and resouces 表示導(dǎo)出的jar包中將包含你的源代碼*.java,不想泄漏源代碼,那么就不要選這項(xiàng)了
Export refactorings for checked projects 把一些重構(gòu)的信息文件也包含進(jìn)去
3.如下圖,點(diǎn)擊next。
4.如下圖,Main class為項(xiàng)目入口路徑,點(diǎn)擊后面的按鈕可以選擇項(xiàng)目入口路徑,選擇好后點(diǎn)擊finish即可完成打包。
Generate the manifest file:是系統(tǒng)幫我們自動(dòng)生成MANIFEST.MF文件,如果你的項(xiàng)目沒(méi)有引用其他class-path,那可以選擇這一項(xiàng)。
Use existing mainfest from workspace:這是可以選擇我們自定義的.MF文件,格式如上所寫,引用了第三方包時(shí)選用。
Seal content:要封裝整個(gè)jar或者指定的包packet。
Main class:這里可以選擇你的程序入口,將來(lái)打包出來(lái)的jar就是你這個(gè)入口類的執(zhí)行結(jié)果。
在打包好后有幾個(gè)問(wèn)題需要注意:
1.MANIFEST.MF文件需要根據(jù)自己的項(xiàng)目需要進(jìn)行編寫替換,MANIFEST.MF文件的修改需要嚴(yán)格遵守書寫規(guī)范,
首行為 Manifest-Version: 1.0
第二行為Class-Path: xxx.jar(依賴的jar,沒(méi)有就不寫)
第三行為Main-Class: 項(xiàng)目入口路徑
每個(gè)冒號(hào)后面需要有一個(gè)空格
每行結(jié)束不能有空格
Main-Class: 項(xiàng)目入口路徑 后面需要打兩個(gè)換行
如果依賴多個(gè)jar,則書寫完每個(gè)jar后空一格寫下一個(gè)
每行不能超過(guò)72個(gè)字符,如果每行寫一個(gè)jar,則每行開(kāi)始空兩格。
lib/junit.jar org.hamcrest.core_1.3.0.v20180420-1519.jar,為我的 juit 需要的 jar 包,創(chuàng)建一個(gè) lib 目錄存儲(chǔ)著兩個(gè) jar 包。
2. 使用eclipse將項(xiàng)目打包后,項(xiàng)目中實(shí)際調(diào)取的依賴和文件等路徑一般需要和項(xiàng)目的jar存放到同一級(jí)目錄,否則會(huì)出現(xiàn)ClassNotFound等異常,放在同一級(jí)目錄也方便后面根據(jù)需求修改配置文件。
3.編譯好的jar可以用java -jar xxx.jar運(yùn)行,這種運(yùn)行方式會(huì)在命令行或linux服務(wù)器上顯示啟動(dòng)和項(xiàng)目中的打印信息,當(dāng)使用Ctrl+C退出時(shí),jar的運(yùn)行也會(huì)終止。
二、使用 maven 打包
Maim
package com.bug.test; import org.junit.Test; public class Main { public static void main(String[] args) { test(); } @Test public static void test() { for(int i = 0; i < 10; i++) { System.out.println(i); } } }
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bug</groupId> <artifactId>Test</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 依賴 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin </artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <!-- 工程主類的全限定名 --> <mainClass>com.bug.test.Main</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
這樣也可以:
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <archive> <manifest> <mainClass>com.bug.test.Main</mainClass> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> <classesDirectory> </classesDirectory> </configuration> </plugin> </plugins> </pluginManagement> </build>
注意:如果工程上顯示紅叉。在項(xiàng)目上右鍵->maven->update project即可。
將程序打成jar包:
步驟詳情:右鍵->Run as->maven install。等待編譯完成就會(huì)在項(xiàng)目的target文件夾中生成jar包。如果看不到。在項(xiàng)目上右鍵->Refresh,即可看到。
參考:http://www.dbjr.com.cn/article/142553.htm
idea打包java程序(包含依賴的所有jar包):http://www.dbjr.com.cn/article/188851.htm
到此這篇關(guān)于將Java項(xiàng)目打包成可執(zhí)行的jar包的文章就介紹到這了,更多相關(guān)Java打包成可執(zhí)行ar內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot3 RestTemplate配置與使用詳解
本文詳細(xì)介紹了在 SpringBoot 3.x 中如何配置和使用 RestTemplate,包括基本配置、高級(jí)配置以及各種使用場(chǎng)景,感興趣的朋友跟隨小編一起看看吧2024-12-12MyBatis?多表聯(lián)合查詢及優(yōu)化方法
大家都知道Hibernate 是全自動(dòng)的數(shù)據(jù)庫(kù)持久層框架,它可以通過(guò)實(shí)體來(lái)映射數(shù)據(jù)庫(kù),通過(guò)設(shè)置一對(duì)多、多對(duì)一、一對(duì)一、多對(duì)多的關(guān)聯(lián)來(lái)實(shí)現(xiàn)聯(lián)合查詢,接下來(lái)通過(guò)本文給大家介紹MyBatis?多表聯(lián)合查詢及優(yōu)化,需要的朋友可以參考下2022-08-08