在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());
}请教高手是什么原因呢?
但是等输出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());
}请教高手是什么原因呢?
使用的default package
所有资源,包括图片,源代码都在工程文件夹TheAquarium下,没有其他子文件夹了。
不过你的图片加载好像有点不对
怎么全add到0上面去了呢?后面的add到1,2上呀,然后都要wait的
aquariumImage = Toolkit.getDefaultToolkit().getImage(address);
{ 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");
}
}
jar cvfm Spider.jar META-INF/MANIFEST.MF .cvfm比cvf多了个m,然后后面跟上清单文件的相对路径!
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);
}
}
举个例子:
有个文件夹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. 楼主好运!^_^!