目前我正在 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/