2014-10-22 3 views
0

Я работаю над java-игрой, и игра отлично работает в eclipse, но когда я экспортировал ее как исполняемый файл jar, это не сработало. Появилось только черное окно.Eclipse экспортированный jar-файл просто показывает черный Jpanel

В моей игре есть заставка, которая через несколько секунд переключается на экран меню. экран заставки экрана BufferedImage (в jpg), но экран меню также состоит из записи Graphics2D. Через несколько секунд после запуска файла jar запись не появляется, поэтому я думаю, что форматы изображений и, возможно, не проблема.

Я довольно смущен и разочарован, поэтому любая помощь будет назначена.


Оказалось, что проблема в моем использовании таймера, это мой источник SplashScreen

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(); 
} 

} 

Я до сих пор не знаю, что это неправильно, так что любая помощь будет appriciated

+0

Изображение включено в банку? Потому что, если это не так, это может быть проблемой, я не знаю о написании: /. – Roan

+0

Да, я создал папку с ресурсами, полную пакетов изображений, но это сработало для моих других проектов, поэтому я не думаю, что это так. – user3000140

+0

Хорошо, странно, это может быть глупая идея, но это сработало для меня, как только попробуйте запустить jar с .bat-файлом (или .sh). – Roan

ответ

0

У меня была аналогичная проблема в прошлом, и это было связано с тем, как Eclipse собирал необходимые библиотеки в банку. Я бы поспорил, что у вас установлено значение «Извлечение необходимых библиотек в сгенерированную банку», и вы должны установить его в «Пакет необходимых библиотек в сгенерированную банку». Для этого щелкните правой кнопкой мыши по проекту -> Export -> Java -> Runnable Jar File. Затем нажмите кнопку «Далее» и выберите радиокнопку «Пакет необходимых библиотек в созданную банку». Это должно решить вашу проблему.

Если вы пишете изображение, изображение должно быть вне файла jar, потому что вы не можете редактировать файл jar во время его работы. Если это так, вы можете создать папку, содержащую вашу банку, и изображения, на которые она будет писать.

+0

это не сработало, я уже пробовал это. А также я использую только изображение, а не писать ему – user3000140

+0

Возможно ли, что ваш eclipse vm использует разные параметры, чем ваша система vm? Или, может быть, ваша Java-версия Eclipse отличается от вашей версии системы? – holtc

+0

Я отредактировал основную нить – user3000140

Смежные вопросы