gpt4 book ai didi

java - 将 Eclipse 项目导出到 Runnable Jar

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

所以,我在互联网上阅读了如何将我的项目提取到可运行 Jar 文件中。

我已经能够很好地提取它们,但是当我尝试运行它时,它什么也没做。

当我在命令提示符中使用

运行它时
java -jar ModdingForScrubs.jar

,我得到以下输出:

/image/p8C5e.jpg

它指向的特定行是:

int numOfBackgrounds = new File("resources/background").listFiles().length;

它正在产生空指针异常。当我在 eclipse 中运行我的项目时,一切都很好。

当我将它导出到 jar 时,它会得到一个 NPE,我认为这是由于它找不到该文件引起的。

这是我的项目工作区:

/image/JppkO.jpg

如有任何帮助,我们将不胜感激。

最佳答案

需要考虑的事情。

  1. 在使用文件时,您不应该使用硬编码值。一旦应用程序被“jarred”,文件系统位置将不再与从 IDE 运行时相同。

  2. 如果您想读取 jar 资源,您应该通过 URL 读取资源,使用 getClass().getResource("...") 或其变体之一.

而且看起来(使用您使用的“资源/背景”路径),“资源”与src处于同一级别,并且不是 事件被包含到 jar 的构建路径中。如果您提取 jar,我很确定文件不会在那里。

您应该将“资源”放入“src”中,这样​​它就会自动放入构建路径中。您可以将其保留在原处,然后配置构建以添加它,但这将需要更长的解释。所以只需将其放在“src”中即可。所以你将有一个像这样的文件结构

ProjectRoot
src
resources
beackground

问题仍然是尝试读取文件的路径,它将使用硬代码相对路径在文件系统上搜索文件。那是行不通的。正如我所说,它应该从 URL 读取。所以你可以这样做:

URL url = TestFiles.class.getResource("/resources/background");
URI uri = url.toURI();
File file = new File(uri);
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
}

这应该有效。因此,只需确保构建后,文件确实存在于 jar 中,然后获取所需目录的 url,然后就可以从 URI 创建一个 File

  • 请参阅Class API更多资源获取方法,以及一些解释。

关于java - 将 Eclipse 项目导出到 Runnable Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956405/

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