我在Linux上创建了一个项目,该项目使用各种资源(.png和.xml),当我在Linux上运行代码时已成功加载,但一旦导出该项目到Windows它会引发空指针异常,当我尝试做同样的事情。Eclipse - 从Linux导入Windows的项目不加载资源
导出/导入是通过存档文件机制完成的,我也尝试手动导入源文件,创建文件夹并将资源文件导入它们。文件夹结构看起来完好无损,资源文件夹在两个平台上都被标记为源文件夹。
而不是硬编码文件分隔符我已经使用了依赖于系统的文件分隔符,所以应该没有问题。
Misc。信息:Linux Mint的32位/ Windows 7的64位,日食带的WindowBuilder,爪哇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)
究竟你的gameImages目录在哪里? –
@JunedAhsan它位于“资源”文件夹内。一切都是通过Eclipse添加的,而不是直接通过文件系统。 – Venom