使用FileInputStream导出JAR文件时出现FileNotFoundException

当前,我正在使用IntelliJ作为SDK在Java中设置Firebase云Firestore。在Firebase文档中,说需要它是json文件的服务帐户密钥。我使用FileInputStream方法获取此json文件,并且在获取执行程序的文件时没有任何问题,但是当我将其导出为JAR库时,使用该JAR的项目找不到服务帐户密钥。 ,然后它无法与我的Firebase连接。

现在,我能够连接到Firebase,但是我想在我正在执行的库中执行所有该过程。我向您展示获取文件的代码。

public InputStream obtainInputStream(String pathFile) throws ReadFileException {

        InputStream inputStream;

        try {
            // Create File Input Stream
            inputStream = new FileInputStream(pathFile);

        } catch (FileNotFoundException e) {
            // Get Input Stream
            inputStream = getclass().getResourceAsStream(pathFile);

            // Check if File Exists
            if(inputStream == null) {

                throw new ReadFileException(String.format("Error Find File %s",pathFile));

            }
        }
        return inputStream;
    }

当我将所有代码导出为JAR文件时,即使将文件保存在资源文件夹中,也找不到该文件并显示FileNotFoundException。我可以在构建gradle文件中做任何事情还是使用等效方法吗?我想将此项目用作其他项目中的libray。

tmc19850121 回答:使用FileInputStream导出JAR文件时出现FileNotFoundException

您好,我建议您将api密钥和firebase连接的数据导出为一组环境变量,这将使项目易于导出,并且易于在放置jar项目的其他计算机上进行读取和更改。

您必须在项目的根目录中创建一个.env并使用dotenv库

示例:

.env文件中的vars

 # formatted as key=value
 MY_ENV_VAR1=some_value
 MY_EVV_VAR2=some_value

在java文件中,您可以像这样获取变量

import io.github.cdimascio.dotenv.Dotenv;
Dotenv dotenv = Dotenv.load();
dotenv.get(“MY_ENV_VAR1”);
本文链接:https://www.f2er.com/3150923.html

大家都在问