【发布时间】:2018-03-11 15:22:06
【问题描述】:
我正在尝试引用 maven 项目结构中的文件。通过我的测试用例,文件定位成功,但是当我将项目部署到 weblogic 环境时,我收到一个错误:
java.io.FileNotFoundException: keystore.jks(系统无法 找到指定的路径)
在我的代码中,我指的是文件如下:
File pKeyFile = new File("certificates/keystore.jks");
String pKeyPassword = keyStorePassword;
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
KeyStore keyStore = KeyStore.getInstance("JKS");
InputStream keyInput = new FileInputStream(pKeyFile);
更新:
我尝试了以下方法:
File pKeyFile = new File(this.getClass().getClassLoader().getResourceAsStream("certificates/keystore.jks").toString());
String pKeyPassword = keyStorePassword;
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
KeyStore keyStore = KeyStore.getInstance("JKS");
InputStream keyInput = new FileInputStream(pKeyFile);
keyStore.load(keyInput, pKeyPassword.toCharArray());
keyInput.close();
keyManagerFactory.init(keyStore, pKeyPassword.toCharArray());
当我评估 this.getClass().getClassLoader().getResourceAsStream("certificates/keystore.jks") 表达式时,我可以看到找到了该文件。但是当它尝试将文件加载为 InputStream 时仍然抛出相同的错误。
【问题讨论】:
-
你应该使用“certificates/keystore.jks”
-
我很抱歉。那只是我跑的一个测试,我更新了问题。
-
看看这个页面:mkyong.com/java/java-read-a-file-from-resources-folder。您应该使用
File file = new File(classLoader.getResource(fileName).getFile());之类的东西,其中类加载器是ClassLoader classLoader = getClass().getClassLoader(); -
嗨@MichałZiober 我正在使用ClassLoader 示例,我可以看到文件已被检索,但是当我将它加载到FileInputStream 时它仍然返回相同的错误,您可能有什么想法吗?
标签: java maven file filenotfoundexception