如果直接写图片名比如:
new ImageIcon("ico/start.png");
这时它会默认在你的项目工程下找。比如,项目工程是这样的结构,Project1/scr/com/test/aaa.java。那它会找Project/ico/start.png,这个文件。放在这也可以。在Eclipse下执行是正常的。但如果是打成Jar包后。这个图片文件不会被打进去。打进去也找不到。你只能在在这个打好的Jar的同级目录下在放一个这个图片文件、夹。虽然这样可以解决问题。但总感觉,这个图片属于这个Jar的,应该跟Jar是一个整体。
所以,比较好的解决办法是,改成这样, new ImageIcon(getClass().getResource("/ico/start.png"))。这样一改,它的读取位置就是Project1/src/ico/start.png. 这样就可以打Jar包时一起被打进来。并且在Eclipse里执行也能正常显示。比之前那种要考文件的“高级”一些。
眼镜蛇
原文 http://www.blogjava.net/Noah/archive/2018/11/15/433496.html