當前位置:首頁 » 編程軟體 » 源碼編譯成jar包

源碼編譯成jar包

發布時間: 2024-05-10 10:14:13

『壹』 如何把java的class文件生成jar包

1
首先,安裝JDK的步驟有很多了,這里就不述及。只講與打包相關的部分。打開控制台界面,輸入jar回車查看,與打jar包相關的操作命令提示。

2
下面為了讓大家便於理解,此處只為一個單獨的類進行打包。下圖為所寫java源代碼,只是為了展示打包步驟。

3
然後對此程序進行編譯生成class文件,然後將生成的com文件夾進行打包。

4
這里需要說明一下,打包時源文件,即Demo.java文件不需要打進去,只需要把*.class文件打進去。在控制台進入com文件所在的文件目錄,例如本例中的javapro文件。如圖示

5
進入javapro文件後輸入jar -cvf [jar包的名字] [需要打包的文件]。
例如jar -cvf my.jar com,效果如圖示。

6
最後,就是如何使用這個jar包。要使用jar包,需要設置環境變數,可以在電腦上設置,也可以在控制台上用命令設置,這里用後者展示。
在控制台輸入set classpath=.;d:\javapro\my.jar

7
下面寫一個測試類,測試此jar包是否可用。測試之前把生成的Demo.class文件刪除,只保留jar包。測試程序如下圖所示。

8
在控制台編譯、運行TestDemo.java

『貳』 如何把github上下載下來的maven源代碼zip文件打包成可運行的jar文件

用IDEA克隆項目,再把maven與IDEA整合,如圖所示點這個:

再點綠色三角,就可以打包。

這項目真大,等我下好直接把jar包發給你。

『叄』 如何把github上下載下來的maven源代碼zip文件打包成可運行的jar文件

1.下載Spring源碼
git下載地址:https://github.com/SpringSource/spring-framework/
2.下載完成後,編譯前需滿足的先決條件
1)當前系統中安裝了gradle,如果為安裝,可以從:http://www.gradle.org/downloads,選擇一個版本進行下載
2)當前系統安裝了OpenJDK 8 early access build 100 or later,點擊鏈接可以下載。安裝後還需要確認JAVA_HOME環境變數中指向了剛安裝的JDK8
3)鑒於上次編譯Hibernate的經驗,建議修改區域語言為「英語(英國)」,防止在編譯過程中出現字元編碼錯誤。
3.運行編譯命令,將代碼編譯為eclipse項目
1)命令行下切換當當前spring代碼的根目錄
cd C:\Users\Administrator\Documents\GitHub\spring-framework
2)運行import-into-eclipse.bat,這次不是直接運行gradlew.bat,但打開import-into-eclipse.bat可以看到,其實其內部還是調用了gradlew,如:
72行 set COMMAND=gradlew :eclipse
90行 call %COMMAND%
3)編譯時會提示你安裝Spring STS,下載地址
http://springsource.org/downloads/sts
選擇相應的版本下載,我選擇下載的是基於ECLIPSE KEPLER 4.3的32位zip版
下載地址為:
http://download.springsource.com/release/STS/3.3.0/dist/e4.3/spring-tool-suite-3.3.0.RELEASE-e4.3-win32.zip
直接回車確認即可
4)接著會提示要運行的命令是:
./gradlew cleanEclipse :spring-oxm:compileTestJava eclipse -x :eclipse
直接回車確認
5)接下來會自動下載所需的依賴包,等待其下載、編譯完成即可。
編譯的過程中,第一次編譯停留在「> Building > :spring-core:cglibRepackJar」這個提示處很久,查看cmd的進程,貌似死了,我將其結束後重新運行,依舊停留在這個地方。
註:在編譯過程中,經常出現在下載依賴項時沒有響應的情況,需要找到對應的java進程,結束後重新運行,或者直接關閉命令行窗口重新來一次,暫未找到具體原因。
猜測應該和我的網路狀況和java環境有關,編譯過程中嘗試了jdk8的32位和64位版本,都有這個問題。
在編譯多次不成功以後,我通過運行gradlew.bat install,嘗試先把所有的依賴項都先下載下來,在下載子項目相關的依賴項的過程中,仍然會出現命令沒有響應的情況,只能一次又一次地關閉,重新運行。
一次又一次編譯假死後,終於看到了「BUILD SUCCESS」,再次運行import-into-eclipse.bat,這次運行,跳過了很多之前需要下載的依賴項,應該是運行install命令的時候已經下載過了,但還是有一些仍然需要下載的依賴項。觀察輸出,會發現首先會下載依賴項所對應的pom文件,接著才會下載對應的jar。應該是和Maven相關的,有時間要把Maven、ant、ivy、gradle這些都看一下。

『肆』 eclipse中怎樣將項目打包成jar

由於他的源代碼中使用了不少第三方的lib,因此有必要將lib也一並打包進去。他用Eclipse的Export功能直接打包到.jar文件,第三方lib是打包進來了,可是使用的時候還是提示找不到相應的包。
其實,為了自己的便利將別人發布的lib打包進自己project的包中不是一種合適的做法。這樣做之前務必要檢查一下對方的license,但不管是不是將對方的lib包括進來,既然自己的代碼用到了,為了讓它們正常工作,指明哪些包在那是必不可少的。師弟其實需要一個MANIFEST.MF文件,利用Eclipse生成jar文件的時候,請不要讓其自動生成MANIFEST.MF,而是應當由你自己寫好一個MANIFEST.MF,然後告訴 Eclipse:請使用這個文件。想了解細節,請閱讀SUN的這篇規范(VIA),或者是IBM網站上的這篇JAR文件揭秘,偶這里就不多寫了。
另外,Eclipse其實還有一個輸出到可執行jar的功能,該功能能夠幫你編寫合適的MANIFEST.MF文件,幫你將你引用的第三方lib一並打包(注意license哦)。
第一:普通類導出jar包,我說的普通類就是指此類包含main方法,並且沒有用到別的jar包。
1.在eclipse中選擇你要導出的類或者package,右擊,選擇Export子選項;
2.在彈出的對話框中,選擇java文件---選擇JAR file,單擊next;
3.在JAR file後面的文本框中選擇你要生成的jar包的位置以及名字,注意在Export generated class files and resources和Export java source files and resources前面打上勾,單擊next;
4.單擊兩次next按鈕,到達JAR Manifest Specification。注意在最底下的Main class後面的文本框中選擇你的jar包的入口類。單擊Finish,完成。
你可以在dos環境下,進入你的jar所在的目錄,運行 java -jar 名字.jar,檢測運行是否正確。
第二、你所要導出的類里邊用到了別的jar包。比如說你寫的類連接了資料庫,用到資料庫驅動包oracl.jar.。
1.先把你要導出的類按照上面的步驟導出形成jar包,比如叫test.jar
2.新建一個文件夾main,比如在D盤根目錄下;
3.把test.jar和oracl.jar拷貝到main文件下,右擊test.jar,解壓到當前文件夾。把META-INF\MANIFEST.MF剪切到另外一個地方 (比如是桌面!) ;
4.右擊oracl.jar,解壓到當前文件夾。
5.在dos環境下,進入到D盤的main文件夾下,執行 jar cvfm new.jar meta-inf/manifest.mf .,不要忘了最後面的點。
6.用壓縮工具打開你新生成的new.jar,用你放在桌面的META-INF\MANIFEST.MF覆蓋new.jar原有。
你可以在dos環境下,進入你的jar所在的目錄,運行 java -jar 名字.jar,檢測運行是否正確。
關於 MANIFEST.MF 寫法.
例如我們打包的jar為 Test.jar
Manifest-Version: 1.0
Main-Class: windows.VideoWindow
Class-Path: lib\org.eclipse.swt_3.3.0.v3346.jar lib\org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar
上面為打包為jar中的包說明文件. 下面這個報錯一直出現.
could not find main class. Program will exit
這個錯誤提示其實不是沒有發現main class. 而是jar如果有錯誤執行不了,就會出現這個錯誤. 打包完成後, 要先運行 cmd -> java -jar your.jar 確認沒有問題即可執行jar. 使用-jar參數後, 系統的Classpath 變數不再起作用. 虛擬機將去MANIFEST.MF中的Class-Path 下找相關的包.
然後才能成功的從: windows.VideoWindow 的main方法進入. 否則沒有相關連接包,則會提示找不到main class. 而大家可能還迷糊的找不到北. 明明有main class嗎.
如果這個寫的不對. 則就會一直報錯.
看看上面這個Class-Path: 後面的寫法. 空格分開. 絕對不能有分號.切記.
最後必須有換行. 這個也是要注意的. 否則依然提示沒有mainclass.
不要因為這個小事情耽誤了時間. 其中 lib/ 表示這個jar必須在打包Test.jar所在目錄的一個lib子目錄中.
運行jar需要命令: java -jar Test.jar
雙擊也可以, 則使用 javaw 打開.
關於java -classpath a.jar;b.jar; class test.Test 執行時. a.jar;b.jar; 後面都必須有分號. 否則報錯. 不要指望不寫classpath讓系統自己找. 這不是在eclipse裡面.必須寫上你要使用的類. 否則總會提示您編譯出錯.

『伍』 如何將源代碼編譯成jar包

先打開命令提示符(win2000或在運行框里執行cmd命令,win98為DOS提示符),輸入jar Chelp,然後回車(如果你盤上已經有了jdk1.1或以上版本),看到什麼:

用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...

選項:

-c 創建新的存檔

-t 列出存檔內容的列表

-x 展開存檔中的命名的(或所有的〕文件

-u 更新已存在的存檔

-v 生成詳細輸出到標准輸出上

-f 指定存檔文件名

-m 包含來自標明文件的標明信息

-0 只存儲方式;未用zip壓縮格式

-M 不產生所有項的清單(manifest〕文件

-i 為指定的jar文件產生索引信息

-C 改變到指定的目錄,並且包含下列文件:

如果一個文件名是一個目錄,它將被遞歸處理。

清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標志指定的相同順序。

首先在資源文件當前目錄寫一個清單文件example.mf

mf文件應是以下格式:
第一行為:
Main-Class: Hello
然後最少兩個空行。
其中的Hello.class是你寫的程序中main函數所在的那個類名。
有兩點必須記得:
1,在第一行中"Main-class:"之後一定要有一個空格。後有最少兩個空行
2,類名不能寫成Hello.class的格式,要省了後輟。
我試過了,你錯的原因是"Main-class:"之後沒有一個空格。
在CLASS目錄下運行:jar cfm example.jar example.mf A.class B.class

示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:


jar cvf classes.jar Foo.class Bar.class

示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有文件存檔到一個名為 'classes.jar' 的存檔文件中:

jar cvfm classes.jar mymanifest -C foo/ .

來個小例子試試看:

我們只有一個HelloWorld,如下:

public class HelloWorld{
public static void main(String[ ] args){
System.out.println("Hi, Hello World!");
}
}
將這個java文件存到C盤跟目錄下,ok,接下來,

在先前打開的命令提示符下(跳轉到C盤提示符下),我們輸入javac HelloWorld.java,然後繼續輸入:jar cvf hello.jar HelloWorld.class,回車後去你的C盤看看,多了什麼,沒錯 hello.jar 。

基本的步驟我們現在都知道了,你可以自己去嘗試一下隨著jar後面的參數的不同,結果有什麼變化。
緊接著我們看看如何運行我們的jar包。

在進入正題之前,你要先打開我們剛剛做好的jar包看看,多了什麼呢,META-INF目錄?再看看裡面是什麼,還有一個MANIFEST.MF文件是不是?用文本編輯器(我這里是UltraEdit)打開它看看:

Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)

就是這樣。這里我們對它進行修改,加一句:Main-Class: HelloWorld (在第三行)。這個就是我們之前寫的那個類,也就是我們的入口類。也即,

Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld

接下來,我們在命令提示符里執行:

jar umf MANIFEST.MF app.jar (應該是hello.jar吧)

這樣我們使用了我們自己的MANIFEST.MF文件對原來默認的進行了更新。你不妨可以再進去看看是不是添上了Main-
Class: HelloWorld這一句。 (是嗎,我怎麼沒試出來,提示
java.io.FileNotFoundException:MANIFEST.MF(系統找不到指定的文件)怎麼回事?
)

Ok,這個最後的一步了,來驗證我們做的一切,在命令提示符中輸入:

java -jar hello.jar(執行)

出現了什麼, Hi, Hello World!

我們再來看看jar文件在tomcat中發布,注意:在tomcat中我們就不能再用jar這種格式,而改war格式,它是專門用於web應用的,其實整個過程下來基本上和jar是類似的:

先准備我們要打包的資源。

找到存放tomcat的webapps目錄,進到其中,新建一個文件夾,這里命名為hello,再進去新建WEB-INF文件夾,再進去新
建 classes文件夾,此時我們也將我們唯一的servlet,HelloWorld.java放到這里,在與classes目錄同級下建立一文
件 web.xml。Ok,目前我們初步建立了一個簡單的web應用。

這是HelloWorld.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("");
out.println("");
out.println("");
out.println("Hello, World!");
out.println("");
}
}//end here!

對它編譯。下面是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>

在命令提示符下進到先前創制的hello目錄下,執行 jar cvf hello.war * ,我們便得到hello.war。將它拷貝至webapps目錄下,ok,來看最後一步,打開tomcat的目錄conf中的server.xml,加入:

<Context path="/hello" docBase="hello.war" debug="0" reloadable="true"/>
大功告成!運行它,啟動tomcat,後在瀏覽器中輸入http://localhost:8080/hello/HelloWorld,有了嗎?

最後,如果你想用ant來完成以上的打包活動,下面就告訴你:
對於jar來說。在build.xml中,

<target name="jar">
<jar destfile="${app_home}/hello.jar">
<fileset dir="${dest}" includes="**"/>
<!--fileset dir="${dest}" includes="**/action.properties"/-->
</jar>
</target>
對於war,

<war warfile="hello.war" webxml="./WEB-INF/web.xml">
<fileset dir="html"/>
<lib dir="lib/">
<exclude name="oracle*.jar"/>
</lib>
<classes dir="build/servlets">
<include name="**/*.class"/>
</classes>
</war>
好了,就這么多,希望對你有點幫助。:)

補充:

jar基本操作:

1. 創建jar文件
jar cf jar-file input-file(s)
c---want to Create a JAR file.
f---want the output to go to a file rather than to stdout.
eg: 1)jar cf myjar.jar query_maintain_insert.htm
2)jar cvf myjar.jar query_maintain_insert.htm
v---Proces verbose(詳細的) output.

3)jar cvf myjar.jar query_maintain_insert.htm mydirectory
4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory
0---don't want the JAR file to be compressed.
5)jar cmf MANIFEST.MF myjar.jar yahh.txt
m---Used to include manifest information from an existing manifest file.
6)jar cMf MANIFEST.MF myjar.jar yahh.txt
M---the default manifest file should not be proced.
7)jar cvf myjar.jar *
*---create all contents in current directory.

2. 察看jar文件
jar tf jar-file
t---want to view the Table of contents of the JAR file.
eg: 1)jar vft yahh.jar
v---Proces verbose(詳細的) output.

3. 提取jar文件
jar xf jar-file [archived-file(s)]
x---want to extract files from the JAR archive.
eg: 1)jar xf yahh.jar yahh.txt(僅提取文件yahh.txt)

2)jar xf yahh.jar alex/yahhalex.txt(僅提取目錄alex下的文件yahhalex.txt)

3)jar xf yahh.jar(提取該jar包中的所有文件或目錄)

4. 修改Manifest文件
jar cmf manifest-addition jar-file input-file(s)
m---Used to include manifest information from an existing manifest file.

5. 更新jar文件
jar uf jar-file input-file(s)
u---want to update an existing JAR file

『陸』 怎麼把java文件打包成jar文件

若要生成一個名為 cal.jar 的可執行jar文件:(文件名可以是任意合法名字)
(這是我認為簡單實用的一種方法,還有很多別的方法在此就不介紹了)
第一 把程序生成的所有位元組碼文件(即.class文件)放在同一個目錄下(如:D:/chat/).
第二 在該目錄下新建一個manifest.mf文件,文件內容格式如下(劃線中內容):
manifest.mf文件中的格式:
Main-Class: (空格)calDemo (注意:冒號和類名之間一定要有一個空格)
注意: calDemo代表主類名(即要運行的類名,只能有一個,不要文件擴展名)
Main與Class中間不是下劃線,而是短橫線
Main-Class:與calDemo中間必須要有空格
Main-Class: calDemo之後必須要回車

然後用jar命令生成可執行的jar文件,例如:
(執行該命令前先要轉到該目錄下 D:/chat/ )
jar cvfm cal.jar manifest.mf *.class

jar用法:(僅供參考,初學者可跳過這部分內容)
jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
選項:
-c 創建新的存檔
-t 列出存檔內容的列表
-x 展開存檔中的命名的(或所有的〕文件
-u 更新已存在的存檔
-v 生成詳細輸出到標准輸出上
-f 指定存檔文件名
-m 包含來自標明文件的標明信息
-0 只存儲方式;未用ZIP壓縮格式
-M 不產生所有項的清單(manifest〕文件
-i 為指定的jar文件產生索引信息
-C 改變到指定的目錄,並且包含下列文件:
如果一個文件名是一個目錄,它將被遞歸處理。
清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標志指定的相同順序。

示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有
文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvfm classes.jar mymanifest -C foo/ .

jar 運行

java -jar *.jar

『柒』 怎麼修改jar包中的class文件然後再重新打成jar包

該過程需要經歷四個步驟:解壓,反編譯,修改,打包。
解壓:jar文件和我們平常的rar和zip文件一樣是屬於壓縮文件,通過一般的解壓縮工具(例如:winrar)都能解壓。解壓之後生成的文件為**.class的位元組碼文件。
反編譯:互聯網上有很多的位元組碼文件反編譯工具(例如:jad)。他能夠將**.class文件或者直接能夠將jar文件反編譯為**.java文件。
得到java文件以後就可以修改裡面的源代碼了。
將修改好的代碼編譯成**.class位元組碼文件以後再添加替換掉原來jar包中的class文件,或者重新將修改後的java代碼轉換成java工程,再生成jar文件都行。
這個過程的完成需要熟悉java基礎,編譯環境等相關知識。尤其是對jar包的理解很重要。反編譯在互連網上就能直接找到很多工具。打包則很簡單不做累述。

『捌』 如何將一個java項目源代碼打包成jar文件

右鍵點擊項目,選擇Export,找到java-JAR file點擊next,選擇jar的保存路徑,一般保存到桌面就行了,點擊finish,就OK了

熱點內容
redisphp機制 發布:2024-05-21 00:01:27 瀏覽:123
qq加密了怎麼解除繪圖 發布:2024-05-20 23:56:31 瀏覽:15
安卓怎麼轉蘋果app 發布:2024-05-20 23:40:04 瀏覽:133
phpcgi啟動 發布:2024-05-20 22:38:57 瀏覽:578
嵌入式存儲伺服器 發布:2024-05-20 22:14:55 瀏覽:395
sql分組條件 發布:2024-05-20 22:08:49 瀏覽:16
配網web伺服器一個IP地址 發布:2024-05-20 22:07:16 瀏覽:725
電腦板伺服器地址175 發布:2024-05-20 22:03:30 瀏覽:959
編譯靜態函數時 發布:2024-05-20 21:51:20 瀏覽:351
如何在別人的伺服器加模組 發布:2024-05-20 21:28:29 瀏覽:62