在jar包中獲取路徑,一般是用於讀取資源文件
System.getProperty的方式獲取到的是啓動路徑,比如cd 到 E:/er下執行 存放在 F:/aa目錄下的jar包, 獲取到的路徑就是E:/er
使用new File("")的方式有同樣的問題
如果要更準確需要使用 Class對象的getProtectionDomain().getCodeSource().getLocation(),如果在jar包中可以獲取到jar包的路徑
比如 項目A中引入了第三方jar b.jar, b.jar 的代碼中getProtectionDomain().getCodeSource().getLocation(),將項目A打成a.jar
運行a.jar得到的路徑就是a.jar的路徑。通過這種方式可以讀取到jar包外的配置文件
如果配置文件就在jar包中,使用Thread獲取當前線程,通過當前線程獲取類加載器,通過類加載器獲取文件流