關於System.getProperty("user.dir")的研究
阿新 • • 發佈:2019-02-08
記得之前看過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返回的就是哪裡。