windows批處理運行java程序


明確需求

今天你編了一個java swing版照片查看器,想讓計算機上的所有照片默認打開方式都改成你的照片查看器.

使用工具軟件

很多工具軟件都是不把jre打包到exe中的,這就是說打包之后的exe只能運行在裝了jre的機器上.這一點我是很滿足的,有的人就想把jre打包到exe里面從而到處運行.推薦兩款jar2exe工具:

  • exe4j:生成的是一個文件夾,jre會被導出到文件夾中,文件夾中包含一個exe.
  • jsmooth,我覺得這個比較好,可以生成一個獨立的exe

當你編的java程序有所改動之后,都需要重新生成exe,十分麻煩.不如下面批處理方法運行java程序靈活.

常用的幾個java命令

  • java.exe:在控制台下運行,是阻塞的.即你在控制台下輸入java -jar haha.jar,知道haha.jar運行結束之后,你才能回到控制台下繼續使用控制台.
  • javaw.exe:它是非阻塞的,當你編一個腳本
javaw -jar haha.jar
echo haha

運行之,會發現haha.jar還沒運行完就已經開始執行echo haha

使用windows批處理

如果你不想折騰,不想安裝軟件.那么必然是通過cmd或者exe來運行javaw -jar haha.jar來啟動你的應用.

使用cmd時,要注意把各個命令的回顯關閉.echo off命令關閉全部回顯,echo on打開會先,@mycmd命令表示執行mycmd這個命令時不顯示回顯.

在批處理中傳參數使用方法如下:

  • %0,%1,%2...表示第幾個參數
  • %0表示命令本身,%1表示第一個參數,這跟c語言中main(int argcnt,char**args)是一樣的
  • %*表示全部命令參數
  • %cd%表示當前工作區路徑

經過上面步驟還是會看見黑色控制台的,解決方案是使用start命令.它的作用是啟動一個單獨的窗口以運行指定的程序或命令。

@start javaw haha.jar %*

在調用javaw haha.jar時,會報錯找不到haha.jar,解決方案一使用絕對路徑(可移植性差),解決方案二就是獲取當前運行腳本的路徑

  • %~0或者%0: 取文件名(名+擴展名)
  • %~f0:取全路徑
  • %~d0:取驅動器名
  • %~p0:只取路徑(不包驅動器)
  • %~n0:只取文件名
  • %~x0:只取文件擴展名
  • %~s0:取縮寫全路徑名
  • %~a0:取文件屬性
  • %~t0:取文件創建時間
  • %~z0:取文件大小

以上選項可以組合起來使用,如%~nx0相當於%0,%dpnx0相當於%f0.

使用exe運行javaw命令,可以編一段c++代碼

#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main(int cnt,char**args){ 
	system("java -jar haha.jar ");
	return 0;
}

windows批處理中的注釋

windows批處理的注釋方式有好多種

  • rem方式,可以進行單行注釋,在行末寫^表示本行沒有結束,相當於python中的''
rem 這是第一行注釋^
這是第二行注釋^
每一行的結尾都加上轉義字符就可以把多行當做1行來看,所以就不用每行都寫rem
pause
  • goto+標號方式
goto :main
這里可以寫一些關於文檔的說明
如作者、編寫日期等信息
這些信息寫完后,添加主標簽就可以,運行時,會直接跳到main標簽開始運行
:main
echo hello world

總結

批處理文件方式最好.最終結果

set x=%~dp0%haha.jar
start javaw -jar %x% %*


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM