【问题标题】:Unable to find the file specified java (maven configuration)找不到指定java的文件(maven配置)
【发布时间】: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


【解决方案1】:

你不会写

File pKeyFile = new File("src/main/resources/certificates/keystore.jks");

在 Java 中路径是:

  1. 绝对的
  2. 亲戚:那是你的情况
  3. 类路径资源

相对路径从程序运行的位置开始。所以使用 src/ 肯定是错误的

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 2010-11-18
  • 2018-08-27
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多