当前位置: 首页 > 知识库问答 >
问题:

当我使用FileInputStream导出JAR文件时,FileNotFound异常

越信鸥
2023-03-14

目前,我正在java中建立一个Firebase云火力恢复,使用IntelliJ作为SDK。在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,即使我将该文件保存在resources文件夹中也是如此。我可以在build gradle文件中做些什么,或者使用等效的方法吗?我想用这个项目作为其他项目的图书馆。

共有1个答案

司徒元明
2023-03-14

你好,我建议你导出api密钥和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”);
 类似资料:
  • 我正在尝试打开一个Excel文件,其完整路径存储在String filePath中,filePath的内容为C:/fullpath/Names.xlsx.我正在尝试以下代码: 它在最后一个语句中抛给我以下错误。 此外,该文件不会保存在工作目录中。不确定这里出了什么问题。请一些Java专家研究一下好吗? 谢啦

  • 我正在使用Eclipse并开发一个java应用程序,在这个应用程序中,我使用了一个本地文件。该文件位于项目文件夹中的一个子文件夹中,比如“mydata/myfile.txt”。当我从eclipse运行应用程序时,一切正常,我打开一个FileInputStream,将“mydata/myfile.txt”作为名称传递,文件的读写也正常。但当我将应用程序导出为时。jar,并尝试运行它,我得到的只是控制

  • 2)创建表 3)表创建成功 4)但是当我执行任何select查询时,它会抛出file not found异常

  • 我下载了以下链接: http://www.java2s.com/Code/JarDownload/java/java-json.jar.zip 然后,我将jar添加到构建路径:右键单击项目 我能够使用java-json库而不会出现任何错误。然而,当我将项目导出到一个jar时,没有选项将java-json引用库作为jar的一部分。所以我假设通过将库添加到构建路径,我不必导出外部罐(无论如何也没有选项

  • 我有一个我写的程序的输出文件。它由FileWriter和BufferedWriter编写。 我是否错误地使用了FileWriter/BufferedWriter,或者它在.jar文件中不起作用?

  • 我试图合并2个简单的程序。我想制作成一个。jar文件,这是我编写的代码:(Project1.jar和Project2.exe都打包到这个。jar中) 当我在eclipse中运行项目时,一切都很好(两个文件都像我想要的那样被执行)。但是当我将这个项目导出到。jar并运行它时,什么也没有发生。我认为它与文件路径有关,因为它在Eclipse中运行时工作得很好。怎么解决这个?