Eclipse导出的jar文件只显示了一个黑色的Jpanel

时间:2014-10-22 18:16:26

标签: java eclipse swing executable-jar

我正在开发一个java游戏,游戏在eclipse中完美运行,但是当我导出的是一个可运行的jar文件时,它无效。只出现了一个黑色的窗户。

我的游戏有一个闪屏,几秒钟后会切换到菜单屏幕。启动画面由BufferedImage(jpg)组成,但菜单屏幕也包含Graphics2D书写。在运行jar文件后几秒钟,写入没有显示,所以我认为图像格式等可能不是问题。

我非常困惑和沮丧,所以任何帮助都会得到满足。


原来问题在于我使用的是Timer,这是我的flashscreen源码

  package GameState;

import java.awt.Graphics2D;
 import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

 import javax.imageio.ImageIO;
import javax.swing.Timer;

import Main.GamePanel;

public class SplashState extends GameState implements ActionListener{



private BufferedImage image;
private Timer timer;

public SplashState(GameStateManager gsm) {

    this.gsm = gsm;
     try {
        image = ImageIO.read(new File("Resources/Backgrounds/block.jpg"));
        timer = new Timer(2000, this);
        timer.setRepeats(false);
        timer.start(); 
     } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public void init() {

}

public void update() {

}

public void draw(Graphics2D g) {
    g.drawImage(image, (GamePanel.WIDTH-image.getWidth())/2, (GamePanel.HEIGHT-image.getHeight())/2, null);

}


public void keyPressed(int k) {

}
public void keyReleased(int k) {}

public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub

    gsm.setState(GameStateManager.MENUSTATE);
timer.stop();
}

}

我仍然不知道什么是错的,所以任何帮助都会受到影响

1 个答案:

答案 0 :(得分:0)

我过去遇到过类似的问题,这是由于Eclipse将所需的库打包到jar中的方式。我敢打赌你把它设置为“将所需的库提取到生成的jar中”,你应该将它设置为“将所需的库打包到生成的jar中”。为此,右键单击项目 - >出口 - > Java - > Runnable Jar文件。然后单击“下一步”,并选择“将所需库打包到生成的jar中”单选按钮。这应该可以解决你的问题。

如果要写入图像,则图像必须位于jar文件之外,因为在运行时无法编辑jar文件。如果是这种情况,您可能需要创建一个包含jar的文件夹以及它将写入的图像。