前言:
最近公司做了一個工具,要將這個工具打包成一個可運行的程序,編寫start.bat和start.sh在windows和linux下都可以運行。
在網上找了很多資料,最后終於找到一個可靠的資料,記錄下來,分享給大家,也算是自己的一個總結。
吃水不忘挖井人,感謝這位老哥的文章:https://blog.csdn.net/u011752272/article/details/78560715
不多bb直接開始干活!
一、項目的結構
由於只是測試,里面的東西不復雜,可以用很簡單來說明,創建的是maven項目,當然普通的java項目也是可以的。

二、在本地跑通確認無誤后打成jar放到本地,具體步驟為:
2.1在桌面創建一個名為zztest的文件夾。
右擊項目-->Export-->Java-->JAR file后點擊next,如下圖:

2.2 .settings .classpath .project 這三個文件不要勾選,千萬不要勾選!
選擇生成jar包的路徑為2.1創建的zztest目錄后點擊next,如下圖:

2.3什么都不用動,繼續點擊next,如下圖:

2.4點擊Browse...設置main方法運行的主類后點擊ok后點擊finish,如下圖:
如果有警告的話也不用理,直接確定即可!

三、查看jar
在zztest中已經存在名為test01.jar的jar包,如下圖:

四、解壓(如果項目中有外部jar的引用需要在此添加配置,如果沒有請直接忽略掉這一步進入第六步!!!)
右擊直接解壓這個test01.jar到當前文件夾,如下圖:

五、配置MANIFEST.MF文件(如果項目中有外部jar的引用需要在此添加配置,如果沒有請直接忽略掉這一步進入第六步!!!)
5.1
打開META-INF下的MANIFEST.MF文件
Class-path后面有一個空格請注意,空格后面緊跟jar包的路徑,其中lib目錄與src目錄同級
如下圖:

如果有由於本文沒有測試引用多個jar的情況,所以要引用多個jar請嘗試:
Class-path: lib/test01.jar lib/test02.jar
5.2將修改過的MANIFEST.MF替換掉jar包里面META-INF下的MANIFEST.MF
六、windows下——編寫start.bat腳本
在zztest目錄下創建一個文本文件,在里面增加一段代碼,后保存,名字為start.bat后保存,確定保存,如下圖:

最終的文件結構如下圖(如果項目中沒有引用外部的jar,沒有執行第四步,第五步,只會有一個test01.jar與start.bat):

雙擊start.bat就可以運行,結果如下圖。至此windows下的就已經結束!

七、linux下——Linux下的start.sh啟動腳本編寫
本文使用的是SecureCRT與SecureFX操作linux終端
7.1操作SecureSecureFX將jar放入指定文件夾如下圖:

7.2輸入unzip test01.jar將jar解壓(一定要解壓,才能夠運行,我也不知道解壓的原理......),如下圖:

7.3在SecureCRT命令行中創建一個start.sh腳本並在里面指定執行main方法所在的java類
vi start.sh 注釋:創建一個名字為start.sh的腳本,結果如下圖:

按"i"進入編輯模式編輯文件如下圖所示:
#!bin/bash
java -Xms50m -Xmx250m com.zhanzhuang.windows_and_linux.WAL
exit

然后按一下esc
之后按住shift后加:
可以松手了,輸入wq點擊回車即可
------------------------------------------------------------------------------
光標就變成如下圖所示

7.4 sh start.sh執行腳本結果如下圖所示

至此,linux下的步驟也講解完畢。感謝各位小伙伴收看!
如果在linux下運行的工程里面有引用的外部jar包則start.sh腳本內容如下

