java user.dir 设置_关于user.dir的认识
最近閱讀了一些tomcat源碼,看到tomcat在讀取jar包外配置文件,是將“user.dir”的路徑作為home path文件即
通過System.getProperty("user.dir")找到相關配置。然后自己做了一些嘗試,發現在eclipse執行的時候,
這個user.dir指向工程目錄下,貌似是想要的結果,但是繼續試驗發現,當用于一個windows services
來啟動這個jar包的時候,發現沒有按照預期的方式將日志寫在jar包同目錄下打印出來,
十分困惑,后來進一步查看tomcat相關源碼,注意到在commons-daemon(c++)源碼中,啟動jar包前,使用了SetCurrentDirectoryW(SO_STARTPATH)設定了當前exe所在的路徑為當前的工作目錄,這就是問題點,
設定以后jar包內獲取的"user.dir",就為當前的exe所在路徑(jar包和exe放在同一個路徑下)。
查閱了一些關于"user.dir"的資料,有如下等解釋:
1. "user.dir":User's?current?working?directory ?(官方) 其實不太好理解
2.?就是運行dos命令的那個目錄:
例如:
C:\Documents?and?Settings\user>java?xxx
就是指的C:\Documents?and?Settings\user這個目錄
(在哪里java?哪里就是你的working?directory.)
3. 用戶當前程序運行的路徑(用戶當前工作目錄)
這個有點豁然開朗的感覺,想想看,執行service的時候,其實已經有了當前的運行程序的路徑,而不是exe具體執行的路徑
進過測試打印是這個路徑: ? C:\Windows
所以需要通過SetCurrentDirectory重新設定一下。
總結
以上是生活随笔為你收集整理的java user.dir 设置_关于user.dir的认识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kali linux2019镜像下载,K
- 下一篇: 迷茫在路口——致我的2014