java源代碼轉jar包

引入

jar文件具有跨平臺、數據壓縮、多文件封裝的優點,所以我們常將java源程序和其他的文件(比如資源文件、簽名)打包到一起,變成jar包。這樣對java程序的部署會更方便,也更安全。

用IDEA等IDE,可以直接將java文件轉換爲jar包。本文講解如何用JDK命令來轉換。

本文實驗環境

  • windows10
  • JDK

最簡單的jar包

jar包中可以含有很多文件(具體見[1]),最簡單的jar包,就只含有class和META-INF/MANIFEST.MF。

  1. 寫一個Hello.java
public class Hello
{
    public static void main(String[] args)
    {
        System.out.println("hello ybdesire");
    }
}
  1. 將Hello.java轉換爲Hello.class
E:\one_class>javac Hello.java
  1. 將Hello.class打包jar

用jar命令,具體如下

E:\one_class>jar -cvf hello.jar Hello.class
added manifest
adding: Hello.class(in = 418) (out= 288)(deflated 31%)

其中參數c表示要創建一個新的jar包,v表示創建過程詳細內容輸出,f表示對jar包命名。

  1. 運行jar包

用java命令加-jar參數來運行jar包,如下

E:\one_class>java -jar hello.jar
no main manifest attribute, in hello.jar

被告知,jar包中缺少main manifest參數。

  1. 在jar包中添加參數

用7zip打開hello.jar文件,右鍵選中META-INF/MANIFEST.MF的編輯。

原始內容如下(注意最後一行爲空行):

Manifest-Version: 1.0
Created-By: 1.8.0_201 (Oracle Corporation)

在最後一行插入Main-Class: Hello,並留一行空行。改動後的內容爲:

Manifest-Version: 1.0
Created-By: 1.8.0_201 (Oracle Corporation)
Main-Class: Hello

保存修改到jar包。

  1. 運行改動後的jar包

用java命令加-jar參數來運行jar包,如下,得到最終結果

E:\one_class>java -jar hello.jar
hello ybdesire

將在windows10上打包的hello.jar移動到ubuntu 16.04,仍然可以用如上命令來運行,因爲jar是跨平臺的。

補充:.class文件也是跨平臺的。

參考

  • [1] jar細節:https://www.ibm.com/developerworks/cn/java/j-jar/index.html
  • [2] jar打包過程:https://www.cnblogs.com/flashsun/p/7246260.html
  • [3] dex/jar轉換:https://blog.csdn.net/MayData/article/details/53466126
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章