获得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也是能够访问的。