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

无法使用相对路径从资源文件夹获取JSON文件

沈永贞
2023-03-14

我正在尝试使用相对路径在main方法中从我的资源文件夹中获取一个JSON文件。代码使用绝对路径工作,但一旦我从我的项目构建了一个jar文件,这就是我想要的。

public static void main(String[] args) throws FileNotFoundException {
// Read in database
db = Database.read(Thread.currentThread().getContextClassLoader().getResource("JSON/inhabitants.json").toExternalForm());
names = db.getAllNames();

Read调用数据库中的一个方法,该方法使用inputstream读取文件。

  public static Database read(String filename) throws FileNotFoundException {
    InputStream is = new FileInputStream(filename);
    Reader reader = new InputStreamReader(is);

    return gson.fromJson(reader, Database.class);
  }

我得到的错误如下:

编辑(25/09):如果我使用GetResourceStream而不是getResource,我将得到以下错误:

Caused by: java.io.FileNotFoundException: java.io.BufferedInputStream@4f8e5cde (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at Core.Database.read(Database.java:22)
at Main.main(Main.java:51)
... 11 more

共有1个答案

宗政坚白
2023-03-14

您必须使用getResourceStream从正在运行的jar中读取文件(它包含src\main\resources中的文件)!

 类似资料:
  • 我也试着做 而我不断得到这个结果。

  • V1.1.1新增 sp_asset_relative_url($asset_url) 功能: 获取文件相对路径 参数: $asset_url:文件URL 返回 类型字符串,带协议的绝对地址直接返回原来的值,否则会转化为相对于系统upload 目录的文件路径 实例 <?php $file='/data/upload/1.png';//文件路径 $path=sp_asset_relative_url

  • 本文向大家介绍PHP获取文件相对路径的方法,包括了PHP获取文件相对路径的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP获取文件相对路径的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。

  • 我已经将我的项目上传到githttps://github.com/gitekiras/spring-boot-gradle-mvc 我不能得到正确的是,我不能加载css和js从资源文件夹。 当我把它放在webapp文件夹,我能够得到每件事情的工作,但根据教程,我应该把它们放在资源的静态文件夹。 但是当我这样做的时候,我不能加载页面上的css和js。 谁能说出我错过了什么? 另外:当我在浏览器日志中

  • 我有一个名为的项目,它有以下结构: 所以这两个文件的路径是: 我想读测试文件。TestDataProvider中的json。JAVA 我曾经用过 我看到从URL res=getClass(). getClassLoader(). getResources("testfile.json")返回; 有人能帮我吗?

  • 问题内容: 我的App Engine项目的war / WEB-INF文件夹中有一个文件。我在FAQ中读到,您可以在servlet上下文中从那里读取文件。我不知道如何形成资源的路径: 我将如何构造到该资源的路径以与File()一起使用,就像上面一样? 问题答案: 有两种方法可以做到这一点。只要扩展WAR文件(一组文件而不是一个.war文件),就可以使用以下API: http://tomcat.apa