gpt4 book ai didi

java - 当我使用 FileInputStream 导出 JAR 文件时 FileNotFoundException

转载 作者:行者123 更新时间:2023-12-01 21:57:20 27 4
gpt4 key购买 nike

目前我正在 Java 中设置 Firebase 云 Firestore,使用 IntelliJ 作为 SDK。 Firebase 文档中说需要服务帐户 key ,它是一个 json 文件。我使用 FileInputStream 方法获取此 json 文件,当我获取该文件执行程序时没有任何问题,但是当我将其导出为 JAR 库时,使用该 JAR 的项目找不到服务帐户 key ,然后它就无法连接到我的 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 文件中执行任何操作或使用等效方法吗?我想在其他项目中使用这个项目作为库。

最佳答案

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

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

示例:

在 .env 文件中定义变量

 # 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”);

关于java - 当我使用 FileInputStream 导出 JAR 文件时 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58733501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com