gpt4 book ai didi

java - Eclipse - 从 Linux 导入到 Windows 的项目未加载资源

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

我在 Linux 上创建了一个项目,该项目使用各种资源(.png 和 .xml),当我在 Linux 上运行代码时,这些资源已成功加载,但是一旦我将项目导出到 Windows,当我将项目导出到 Windows 时,它会抛出空指针异常。尝试做同样的事情。

导出/导入是通过存档文件机制完成的,我也尝试过手动导入源文件、创建文件夹并将资源文件导入其中。文件夹结构似乎完好无损,并且资源文件夹在两个平台上都被标记为源文件夹,因为它应该是。

我使用了依赖于系统的文件分隔符,而不是硬编码文件分隔符,因此应该不会有问题。

杂项。信息:Linux Mint 32 位/Windows 7 64 位、带有 WindowBuilder 的 Eclipse、Java 1.7(在两个平台上)

资源加载示例:

public static void loadGameImages(TreeMap<String, ImageIcon> imageMap)
{
String dir_path = GameMechanics.class.getResource(
File.separator + "gameImages").toString(); // this is where the whole thing breaks
URI uri = null;
try
{
uri = new URI(dir_path);
}
catch (Exception ex)
{
raiseError(ex);
}

File dir = new File(uri.getPath());
File[] images = null;
if (dir.isDirectory())
images = dir.listFiles();
for (File f : images)
{
if (f.isFile())
imageMap.put(f.getName(), new ImageIcon(f.getPath()));
}
}

堆栈跟踪:

java.lang.NullPointerException
at hangman.GameMechanics.loadGameImages(GameMechanics.java:98)
at hangman.MainWindow.<init>(MainWindow.java:90)
at hangman.MainWindow$1.run(MainWindow.java:65)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

最佳答案

.getResource() won't accept a backslash as a separator .

您需要更改:

File.separator + "gameImages"

至:

"/gameImages"

更一般地,URI 中的路径分隔符(URL 是 URI 的子集)是 / 而不是 \

附录:由于您使用 Java 1.7,因此放弃 File,使用新的 Files API。

关于java - Eclipse - 从 Linux 导入到 Windows 的项目未加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798359/

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