編譯和運行過程可參考:
https://blog.csdn.net/cynhafa/article/details/82425456
eclipse 和linux 下啟動java程序詳解
一、eclipse 中 run as 》java Application 運行程序
執行的就是 class文件,使用的依賴就是maven Dependencies 下的jar。
run as 》run configurations 里面配置了 main 主函數, classpath 配置了class路徑和依賴的jar路徑,如果是maven 依賴jar路徑 就是 maven Dependencies 里的jar。
如果沒有class文件就會報 加載不到主類。
猜測:run as 》java Application 應該是調用 jdk 的 java.exe 來執行的程序,並且傳遞了run configurations 里面配置的參數。
二、 linux 下 java -jar xxx.jar 啟動jar包
調用ava.exe運行jar文件中的class,
可運行的jar包中都有一個META-INF/MANIFETS.MF文件,其中配置了運行入口類,版本信息、classpath等信息。
jdk中工具javac.exe ,java.exe,jar.exe 的使用詳解
一、javac.exe編譯java文件
javac test.java
二、java.exe 運行class文件
執行帶main方法的class文件,命令行為:
java <CLASS文件名>
注意:CLASS文件名不要帶文件后綴.class
java test
java com.ee2ee.test.PackageTes
三、java.exe運行jar文件中的class
java -cp test.jar com.ee2ee.test.PackageTest
四、jar.exe 打jar包
jar cvf 生成jar包的完整名稱 要生成的class文件所在目錄以及名稱
例如: jar cvf d:/test.jar e:/review/coreJava/chapter4/Employee.class 表示將目錄e:/review/coreJava/chapter4下面的Emlopyee.class生成jar文件並存放在d盤下面的test.jar里面。
jar.exe是jdk中的自帶的壓縮解壓工具,Eclipse中的Export功能可以導出jar包,或者手動打可運行的jar包,都是用的jar.exe,只是做成了圖形化的界面而已,當然jdk中也提供了壓縮解壓的api,比如:ZipFile、ZipEntry、ZipOutputStream等,我們也可以自己實現一個圖形化的壓縮工具。
應用場景:1.sdk開發中需要導出自己的jar包提供給第三方使用;2.替換各種壓縮文件中文件,比如Android開發過程中多渠道打包,渠道信息是在assets中配置文件讀取的,這時候就要循環替換assets中的配置文件,我們知道apk中放到assets目錄下的文件時沒有經過編程處理的,所以替換其目錄下的文件就可以直接用jar命令來實現,而不用先將apk反編譯,這樣可以節省用時。
基本常識:
1.各種文件xxxx.jar、xxxx.rar、xxxx.war、xxxx.zip、xxxx.apk的本質都是壓縮文件,只是用到的壓縮算法可能不同;
2.java中的jar包是可以直接運行的,可運行的jar包中都有一個META-INF/MANIFETS.MF文件,其中配置了運行入口類,版本信息、classpath等信息。
