gpt4 book ai didi

java - 无法找到依赖项中的 Json 文件

转载 作者:行者123 更新时间:2023-12-02 13:37:02 24 4
gpt4 key购买 nike

所以,我编写了自己的后端并将其转化为工件(依赖项)。依赖项包含三个 .json 文件。它的目录树如下:

/resources/
/com/
/META-INF/

现在,当我尝试将依赖项作为库添加到另一个项目(以访问方法等)时,会抛出此消息:

java.io.FileNotFoundException: C:\Users\Yasin\Desktop\LeagueLookup\data\deps\resources\masteries.json (The system can not find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)

这是依赖项中的代码:

public static String PROJECT_ROOT_DIR = new File(Config.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent();

public static String RESOURCES = PROJECT_ROOT_DIR + "/resources/";

public static File MASTERIES = new File(RESOURCES + "masteries.json");

这是我在依赖项中 Sysout PROJECT_ROOT_DIR 路径时的结果

C:\Users\Yasin\Desktop\Riot-API\out\production

当我在后端创建一个类并在其上运行代码时,一切都工作得很好,但是当我尝试在另一个项目中使用该依赖项时,一切都会变得困惑。

我也让它与它的真实路径一起工作

它看起来像这样:

C:\Users\Yasin\Desktop\LeagueLookup\data\deps\main.jar\resources\masteries.json
但这也不起作用(我在某处读到使用InputStream,尝试过,但它总是给我空,尽管路径非常好)我的目标:我想让 API 使用它自己的数据,我不想从其他来源获取数据,而是从我自己的来源获取数据。

希望你能帮助我

最佳答案

您可能误解了 java 应用程序的构建方式。

编写java应用程序(大部分)会产生JAR文件,这些文件可以在任何地方执行。如果您需要访问存储在生成的 JAR 文件中的某些文件(请使用 maven 或 gradle 等),您可以拥有一些 InputStream。您的处理方式:Config.class.getProtectionDomain().getCodeSource().getLocation().getPath()是错误的,因为有关源代码的信息可能会从编译的 .class 中删除。 -文件,尤其是在共享/发送您的应用程序时会有所不同。

为了在你的 jar 文件中保存一些存储文件的 InputStream,你可以使用这个:

ClassLoader.getSystemClassLoader().getResourceAsStream("resources/masteries.json")

由于“资源”不是 jar 内的默认结构,因此您可能需要仔细检查 jar 文件内的内容。

关于java - 无法找到依赖项中的 Json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42932661/

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