獲得D:\WorkSpace\daikuan\aic\aic-common
aic是project aic-common 是module路徑。而後部署到Tomcat下獲取到的就是D:\Java\apache-tomcat-8.5.8\bin 了,居然是Tomcat路徑。
java
因此使用System.getProperty("user.dir");取項目文件這一招很差使,諮詢其餘同事得知能夠經過ClassLodaer路徑獲取項目下得文件。getClassLoader代碼以下apache
public static ClassLoader getClassLoader() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if (classLoader == null) { classLoader = PropertiesUtil.class.getClassLoader(); } return classLoader; }
Enumeration<URL> keyPath= PropertiesUtil.getClassLoader().getResources("resources\\tianping\\private-rsa.pfx"); URL url=null; String path=null; while(keyPath.hasMoreElements()){ url=keyPath.nextElement(); System.out.println(url.getPath()); String path=url.getPath(); }
/D:/WorkSpace/daikuan/chexian-axb-service/target/classes/tianping%5cprivate-rsa.pfx
。%5 給人感受是轉過編碼似的,因此我作了個 URLDecoder.decode 解碼獲得/D:/WorkSpace/daikuan/chexian-axb-service/target/classes/tianping\private-rsa.pfx
居然出現了這樣的路徑 即含有/ 還含有。FileInputStream ksfis = new FileInputStream(path);
試了一下是能夠訪問的。baidu了下沒有找到關於路徑中同時有/ \的資料,有點摸不着頭腦了。我感受出現 可能會和"tianping\private-rsa.pfx" 有關係,因此我就改爲了 "tianping/private-rsa.pfx"
返回的路徑就正常多了 /D:/WorkSpace/daikuan/chexian-axb-service/target/classes/tianping/private-rsa.pfx 使用FileInputStream也是能夠訪問的。