1. 程式人生 > >關於System.getProperty("user.dir")的研究

關於System.getProperty("user.dir")的研究

       記得之前看過java裡面呼叫系統的user.dir屬性,印象中返回的就是當前使用者工作目錄,即在哪個地方啟動的java程式,返回就是當前目錄。但是在專案裡面,看到同事用到這個東西,目的是想獲取專案工作目錄,即bin資料夾和lib資料夾的上層,我覺得就有問題,於是現在用了一點時間,特意測試了一下,果不其然,如我之前說的一樣,詳細見下文。

       首先看java程式碼

public class Test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(System.getProperty("user.dir"));
	}

}

      windows:

     一般在專案裡面,真正部署專案時,用的都是利用bat來把java啟動命令放到裡面來啟動java程式。一般情況下,因為使用者都到親自到bin資料夾下,來雙擊bat檔案來啟動,都沒有問題,但假如,這時我在別的磁碟中用命令列的方式執行bat檔案,就會報找不到class檔案了。

start.bat 檔案內容如下:

java -cp ../lib Test2

        相信大家都看得懂,在哪裡執行java命令,user.dir返回的就是哪裡,還可以看出其實bat就是一系列cmd命令的集合,在執行的時候還是把bat檔案裡面的每一個命令copy到當前cmd裡面執行

linux(redhat)

       在linux下面,通用的做法都是把啟動java程式的命令放在sh腳本里面,和windows的bat檔案類似。

start.sh檔案內容如下:

#!/bin/bash

java -cp ../lib Test2

執行結果如圖:

同windows一樣,其實sh命令也是一系列命令的集合,在哪裡執行java命令,user.dir返回的就是哪裡