System.getProperty(user.dir)定位問題解析
System.getProperty(user.dir)定位問題
前言
隨著學(xué)習(xí)java web 的深入學(xué)習(xí),為了鞏固自己的學(xué)習(xí)成果,練習(xí)了一個springboot項目,但在部署的時候發(fā)現(xiàn)了一個問題,即:
System.getProperty(user.dir)定位問題
一、System.getProperty方法
getProperty()這個方法是獲取指定鍵指示的系統(tǒng)屬性的
@Test public void test(){ //獲取所有的屬性 Properties properties = System.getProperties(); //遍歷所有的屬性 for (String key : properties.stringPropertyNames()) { //輸出對應(yīng)的鍵和值 System.out.println(key + "=" + properties.getProperty(key)); } }
結(jié)果如下,具有很多可以讀取的內(nèi)容
java.runtime.name=Java(TM) SE Runtime Environment sun.boot.library.path=C:\javaweb\jdk1.8.0_101_64\jre\bin java.vm.vendor=Oracle Corporation java.vendor.url=http://java.oracle.com/ path.separator=; java.vm.name=Java HotSpot(TM) 64-Bit Server VM file.encoding.pkg=sun.io user.script= user.country=CN sun.java.launcher=SUN_STANDARD sun.os.patch.level= java.vm.specification.name=Java Virtual Machine Specification user.dir=E:\7.ProjectCodeSource\jdbc java.runtime.version=1.8.0_101-b13 java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment java.endorsed.dirs=C:\javaweb\jdk1.8.0_101_64\jre\lib\endorsed os.arch=amd64 java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\ line.separator= java.vm.specification.vendor=Oracle Corporation user.variant= os.name=Windows 10 sun.jnu.encoding=GBK java.library.path=C:\javaweb\jdk1.8.0_101_64\bin; java.specification.name=Java Platform API Specification java.class.version=52.0 sun.management.compiler=HotSpot 64-Bit Tiered Compilers os.version=10.0 user.home=C:\Users\Administrator user.timezone= java.awt.printerjob=sun.awt.windows.WPrinterJob file.encoding=UTF-8 java.specification.version=1.8 user.name=Administrator java.class.path=E:\7.ProjectCodeSource\jdbc\target\test-classes; java.vm.specification.version=1.8 sun.arch.data.model=64 java.home=C:\javaweb\jdk1.8.0_101_64\jre sun.java.command=org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 57975 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -test com.jim.jdbc.JDBCTest:test java.specification.vendor=Oracle Corporation user.language=zh awt.toolkit=sun.awt.windows.WToolkit java.vm.info=mixed mode java.version=1.8.0_101 java.ext.dirs=C:\javaweb\jdk1.8.0_101_64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext sun.boot.class.path=C:\javaweb\jdk1.8.0_101_64\jre\lib\resources.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\rt.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\sunrsasign.jar; java.vendor=Oracle Corporation file.separator=\ java.vendor.url.bug=http://bugreport.sun.com/bugreport/ sun.cpu.endian=little sun.io.unicode.encoding=UnicodeLittle sun.desktop=windows sun.cpu.isalist=amd64
二、踩坑的屬性user.dir
1.在IDEA中System.getProperty(user.dir)的值
public static void main(String[] args) { System.out.println(System.getProperty("user.dir")); }
結(jié)果為:D:\IDEA\workplace\music
2.部署到tomcat中的System.getProperty(user.dir)
結(jié)果為:/opt/apache-tomcat-9.0.0.M26/bin/
總結(jié)
System.getProperty(user.dir) 獲取的是啟動項目的容器位置,用IDEA是項目的根目錄,部署在tomcat上是tomcat的啟動路徑,即tomcat/bin的位置
System.getProperty("user.dir")的理解
System.getProperty("user.dir"),都說獲得的是“工作目錄”,有老鐵們在意這個,工作目錄怎么理解嗎?我這做了個簡單的測試。
但是,你把這個配置文件放在項目的根目錄下面,也就是 說你的項目文件夾下面直接放一個配置文件,這個時候,就可以,啥前綴不加的,就可以讀取到,這個配置文件啦。
但是,這么放置配置文件,好像有點不合適。
那么,這個路徑究竟該如何寫,才不會報錯呢?
1,在 java project 中的配置文件讀取,項目打包是jar類型的。
System.getProperty("user.dir");
解釋:
默認定位到的當(dāng)前用戶目錄("user.dir")(即工程根目錄)
JVM就可以據(jù)"user.dir" + "你自己設(shè)置的目錄" 得到完整的路徑(即絕對路徑)
這有個前提,你的工程不是web項目,不然,這個返回值就不是項目的根目錄啦,是tomcat的bin目錄。
到此這篇關(guān)于System.getProperty(user.dir)定位問題的文章就介紹到這了,更多相關(guān)System.getProperty(user.dir)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis學(xué)習(xí)教程(六)-調(diào)用存儲過程
這篇文章主要介紹了MyBatis學(xué)習(xí)教程(六)-調(diào)用存儲過程的相關(guān)資料,非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧2016-05-05Spring MVC參數(shù)校驗詳解(關(guān)于`@RequestBody`返回`400`)
這篇文章主要介紹了Spring MVC參數(shù)校驗的相關(guān)資料,主要是針對`@RequestBody`返回`400`的問題,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08Springboot集成任務(wù)調(diào)度實現(xiàn)過程
這篇文章主要介紹了Springboot集成任務(wù)調(diào)度實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04