有问题的代码如下......
static void load() {
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(ClassLoader.getSystemClassLoader().getResourceAsStream("resources/handMap.ser"));
if (ois == null)
JOptionPane.showMessageDialog(null, "null file");
handMap = (HashMap<Long, Integer>) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
它应该做的是将序列化的HashMap加载到内存中。我的文件位于程序的src文件夹下的资源文件夹中。当我通过eclipse运行它似乎没有问题。但是,当我将它作为一个可运行的jar运行时,它似乎没有正确加载文件。我已经做了一些jdialog来让我知道代码出错的地方,看起来执行永远不会超过它应该将文件加载到ObjectInputStream的部分。事情可能出错的任何想法?正如我所提到的,该程序在Eclipse中运行得非常好。