如何用shell脚本编译java工程
歡迎跳轉到本文的原文鏈接:https://honeypps.com/java/how-to-compile-java-project-with-shell/
? ? 編譯java工程一般直接用IDE或者用Ant、Maven之類的工具,很少有人用純shell來編譯java工程。正好遇到這樣一個應該,用這篇博文做一下記錄。
? ? 案例:本人用eclipse寫了一個java project,然后編譯打成jar包。
? ? 這個可以采用eclipse自帶的Export就可以導出jar了。但是為了軟件自動化等巴拉巴拉的原因,采用存shell腳本編譯。
? ? 如圖所示,java project的名稱為iec104,下面src是源文件目錄,bin是所引用的jar包目錄,現(xiàn)在要進行編譯,并且打成jar,如果對jar有所了解,都知道jar有個MANIFEST.MF文件,iec104工程的MF文件內容如下:
?
Manifest-Version: 1.0Main-Class: com.zzh.run.Iec104RecvRun? ? 意思就是制定了運行的main-class(有public static void main(String args[])的類)。
? ? 將這個文件拷貝到iec104的根目錄下,然后執(zhí)行腳本compile.sh,內容如下:
? ? 運行這個腳本(linux下)就可以編譯并且在iec104的目錄下就可以看到iec104.jar文件了。
? ? 這里補充下java命令的基本知識:
? ? javac 用于編譯Java文件,格式為:
? ? ? ? java [options] [sourcefiles] [@files]
? ? 其中:
? ? options:命令行選項;
? ? sourcefiles:一個或多個要編譯的源文件;
? ? @files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。
? ? 有幾個比較重要的選項:
? ? -d 用于指定編譯成的class文件的存放位置,缺省情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;
? ? -classpath 可以簡寫成-cp,用于搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;
? ? -sourcepath用于搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;
需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區(qū)別:
? ? windows下文件路徑分隔符用 \ ,文件列表分隔符用分號 ;
? ? linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :
?
歡迎跳轉到本文的原文鏈接:https://honeypps.com/java/how-to-compile-java-project-with-shell/
歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關注筆者的微信公眾號:朱小廝的博客。?
總結
以上是生活随笔為你收集整理的如何用shell脚本编译java工程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看图
- 下一篇: 如何防止单例模式被JAVA反射攻击