gpt4 book ai didi

在 Java 中获取文件路径时出现 java.lang.NullPointerException(通过 jar 文件执行)

转载 作者:行者123 更新时间:2023-11-30 10:55:58 24 4
gpt4 key购买 nike

我在获取文件路径( Assets 文件夹中的 sh 文件)时收到 NPE。我试图从以下线程中详细了解 NPE,但这实际上无法解决我的问题。

What is a NullPointerException, and how do I fix it?

以下是我的代码片段:

 File absPathofBash;

url = ClassLoader.class.getResource("assets/forbackingup.sh");
absPathofBash = new File(url.getPath());

稍后我在 ProcessBuilder 中使用它,如

ProcessBuilder pb = new ProcessBuilder(url.getPath(), param2, param3)

我也试过直接获取绝对路径,比如

absPathofBash = new File("assets/forbackingup.sh").getAbsolutePath(); 

使用后一种方式,我能够处理它,但是如果我创建一个jar 则无法找到该文件。 (尽管 Jar 包含相应文件夹 assets 中的文件)

如果有人能帮助我,我将不胜感激。

最佳答案

一旦将代码打包为 jar,就不能使用文件路径加载 jar 中的文件,而是它们是类资源,您必须使用它来加载:

this.getClass().getClassLoader().getResource("assets/forbackingup.sh");

通过这种方式,您可以将 assets/forbackingup.sh 作为绝对路径加载到您的 jar 中。您也可以使用 this.getClass().getResource() 但这种方式路径必须相对于 jar 内的 this 类路径。

getResource 方法给你一个 URL,如果你想直接得到一个 InputStream 你可以使用 getResourceAsStream

希望对您有所帮助!

关于在 Java 中获取文件路径时出现 java.lang.NullPointerException(通过 jar 文件执行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33164102/

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