就是setIcon的问题
String icon = "../image/1.gif";
button.setIcon(new ImageIcon(getClass()
.getResource(icon)));
在eclispe下运行没有问题
打成jar包就运行出错,null我又试了一个最简单的例子
public class Test { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t= new Test();
System.out.println(t.getClass().getClassLoader().getResource("."));
}}
在eclipse打印是一个目录
打成jar包后运行就是null
怎么回事啊?

解决方案 »

  1.   

    就是不想用绝对路径才用getResource
      

  2.   

    问题解决了:
    在eclipse下打开的文件,设置的图标,都是目录下的文件,你写成“。。/”,“/”什么都能找的到,打成jar包以后,只有classpath了,这种方式是不行的,所以上面提的test例子
    打印为null,因为“/”在classpath下什么都不能表示,必须写成“/a/b/c.gif”。特别提出的是因为是classpath,里面的所有字母大小写都区分,在eclispe下不区分,打成包区分(我在这上面浪费了好多时间)。
    举一个例子:
    你的图标文件为a/b/c/d.gif
    调用图标文件的class在a/b/e.class
    在eclispe下你怎么写都可以比如 getClass().getResource(“./d.gif”) ;getClass().getResource(“d.gif”);getClass().getResource(“/a/b/c/d.gif”)
    但是为了保证能在jar下找的到必须采用最后一种方式getClass().getResource(“/a/b/c/d.gif”)