在eclipse下运行一切正常
但是等输出jar后 显示不出运行窗口,只是一个最小化的frame标题bar
使用的是jdk1.5,也看过网上类似的,但没有找到确切答案。
图片是这样初始化的
tracker = new MediaTracker(this); fishImages[0] = Toolkit.getDefaultToolkit().getImage("fish1.gif");
tracker.addImage(fishImages[0], 0); fishImages[1] = Toolkit.getDefaultToolkit().getImage("fish2.gif");
tracker.addImage(fishImages[1], 0); aquariumImage = Toolkit.getDefaultToolkit().getImage("bubbles.gif");
tracker.addImage(aquariumImage, 0); try
{
    tracker.waitForID(0);
}
catch (Exception ex)
{
    System.out.println(ex.getMessage());
}请教高手是什么原因呢?

解决方案 »

  1.   

    不能正常运行jar,似乎是图片显示不出
    使用的default package
    所有资源,包括图片,源代码都在工程文件夹TheAquarium下,没有其他子文件夹了。
      

  2.   

    和图片没关系吧?
    不过你的图片加载好像有点不对
    怎么全add到0上面去了呢?后面的add到1,2上呀,然后都要wait的
      

  3.   

    有没有高手碰到过这种情况,eclipse下运行正常,等到jar里就运行有问题了,类似的可能会是什么问题呢?
      

  4.   

    打成JAR包,确实读资源有时候读不到~~
      

  5.   

    真是郁闷啊,最诡异的是昨天晚上运行jar时还是好好的,今天再运行就不行了。
      

  6.   

    在jar包里取得资源的方法,最关键的地方是这样的:getClass().getResource(String); 这个方法返回一个URL,参数用的是相对路径,相对于当前这个类的在jar包里的路径.
      

  7.   

    String address=getClass().getResource("bubbles.gif").toString(); 
    aquariumImage = Toolkit.getDefaultToolkit().getImage(address);
      

  8.   

    用hoverlees()的方法试了下,发现在eclipse中都无法显示图片,不知何原因,程序如下:import java.awt.*;public class Test extends Frame 
    {    private static final long serialVersionUID = 1L;
        static Image aquariumImage;
        
        public static void main(String[] args)
        {
    Test test=new Test();
    test.go();
    test.setSize(600,435);

    test.setVisible(true);

    Graphics g=test.getGraphics();
    while(!g.drawImage(aquariumImage, 0, 0, test));
            
        }
        
        public void go()
        {
    String address=getClass().getResource("bubbles.gif").toString(); 
    aquariumImage = Toolkit.getDefaultToolkit().getImage(address);

    //aquariumImage = Toolkit.getDefaultToolkit().getImage("bubbles.gif");
        }
    }
      

  9.   

    以前也遇到过个问题,试下在JAR命令中显示指定清单文件,如下面的样子:
    jar cvfm Spider.jar META-INF/MANIFEST.MF .cvfm比cvf多了个m,然后后面跟上清单文件的相对路径!
      

  10.   

    谢谢楼上兄弟的帮助,但不知这样有何作用?刚才那段程序我Switch Workspace把原本带空格的路径和程序均做了修改之后,可以在eclipse下运行,但jar中还是不行,出不了图片。import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;public class Test extends Frame
    { private static final long serialVersionUID = 1L; static Image aquariumImage; public Test()
    {
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    dispose();
    System.exit(0);
    }
    });
    } public static void main(String[] args)
    {
    Test test = new Test();
    test.go();
    test.setSize(600, 435);
    test.setVisible(true); Graphics g = test.getGraphics();
    while (!g.drawImage(aquariumImage, 0, 0, test))
    ;
    } public void go()
    {
    String address = getClass().getResource("bubbles.gif").getPath().toString();
    System.out.println(address);
    aquariumImage = Toolkit.getDefaultToolkit().getImage(address);
              }
    }
      

  11.   

    顶,就最后一个程序无法运行jar(图片不显示)
      

  12.   

    顶!直接用命令行打包!
    举个例子:
    有个文件夹Spider,里面有一些类(有包或是无包的),还有一张图片,其中主类是Spider6,在主类中使用图片的语句:ImageIcon ico = new ImageIcon("spider1.gif");
    现在要把这些东西打包,用命令行进行。
    1. Spider目录下建立META-INF目录,再在META-INF目录下建立MANIFEST.MF文件,该文件内容如下:
    Manifest-Version: 1.0
    Main-Class: Spider6最主要的是指明主类。2. 打包,命令行到Spider目录下面,执行:
    jar cvfm Spider.jar META-INF/MANIFEST.MF .
    注意最后有一个点不要少了,表示把当前目录内的东西打包。3. 楼主好运!^_^!
      

  13.   

    把图片文件夹移到跟jar同一根目录就可以了,呵呵,我也是弄了好久才明白的