gpt4 book ai didi

java - 如何使用类加载器获取 model.zip 文件上的输入流,其中该 zip 文件包装在类路径中的 .jar 文件中

转载 作者:行者123 更新时间:2023-12-02 01:58:50 26 4
gpt4 key购买 nike

问题:

我们有一个 jetty Web 应用程序,在应用程序代码中,我试图访问类路径中 jar 中的 zip。这是 libs 文件夹中的 jar:

/path/to/app/x.x.0-SNAPSHOT/apps/libs/my-model.jar

其中 my-model.jar 实际上只是一个空文件夹,其中包含 model.zip 文件。如果我提取这个 jar ,我会得到johnsnow/mymodel.zip

我的应用程序代码尝试访问此 zip:

getClass().getResourceAsStream("johnsnow/mymodel.zip")

但是,当然,我没有得到这个资源的正确句柄,最终得到一个空指针异常。我究竟做错了什么?我是否应该能够使用 getClass().getResourceAsStream() 方法访问类路径中 jar 文件中的文件?

脚注:

由于 model.zip 太大,我们决定不将其与代码库一起发布。因此,我们将其推送到 Nexus 存储库中,并通过 gradle 编译依赖项引用该 jar,如下所示:

compile "com.company.group.nlp:my-model:1.0@jar"

构建发行版会提取此 jar,并将其放入 apps/libs 中,这一事实告诉我 gradle 已完成其职责(将依赖项下载到类路径)。问题仍然是我似乎无法找到访问 my-model.jar 内的 mymodel.zip 的方法

最佳答案

尝试在文件路径中添加斜杠:

getClass().getResourceAsStream("/johnsnow/mymodel.zip");

它会告诉java从根文件夹开始寻找类,而不是从当前的类包中寻找。

关于java - 如何使用类加载器获取 model.zip 文件上的输入流,其中该 zip 文件包装在类路径中的 .jar 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914452/

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