я использую затмение на Linux Ubuntu и у меня есть этот код для загрузки изображения и установив его в качестве фона в одном из моих JPanel,:Java - Экспорт в JAR файл в затмении ресурсы (изображения и звуковые файлы)
public class MenuState extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
private GameStateManager gsm;
private int width;
private int height;
public MenuState(GameStateManager gsm)
{
this.gsm = gsm;
width = gsm.getWidth();
height = gsm.getHeight();
SizeManager sm = new SizeManager();
this.setLayout(new BorderLayout());
sm.set_size(this, width, height);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
BufferedImage background_image;
try {
background_image = ImageIO.read(new File("src/res/img/menu_background.png"));
g.drawImage(background_image, 0, 0, width, height, null);
} catch (IOException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e) {
}
и работает только в затмении. Когда я экспортирую его в файл jar или исполняемый файл jar-файла, он не показывает изображения. Я также пытался использовать
this.getClass().getResource()
и аналогичные коды, но он не работает в eclipse. Но я, возможно, что-то делаю неправильно.
У меня есть этот код в другом классе для воспроизведения звука:
public class AudioManager {
private Clip clip;
public void play(String audio_name, boolean repeat)
{
try {
File audioFile = new File(audio_name);
AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
AudioFormat format = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
clip = (Clip) AudioSystem.getLine(info);
clip.open(audioStream);
if(repeat)
{
clip.loop(clip.LOOP_CONTINUOUSLY);
}
clip.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void stop()
{
clip.stop();
}
и воспроизводит звук в затмении, но не после того, как я экспортировать проект.
Я предполагаю, что файл работает только для файлов на диске, а не для файлов в файле jar, но это единственный способ заставить его работать в eclipse.
Итак, что мне делать?
И дополнительная проблема: Звук, воспроизводимый в затмении, отстает, я улучшил его увеличение доступной памяти для затмения, но при загрузке программы и изменении JPanels в JFrame возникают небольшие задержки, щелкнув JButtons.
Спасибо за любой совет.
Спасибо, я думал, что могу использовать тот же путь, который я использовал в файле, но для getResource() мне пришлось удалить/src. И какой-нибудь совет по запаздыванию звука в затмении? – Spook
Добро пожаловать. Я ничего не знаю о задержке звука в затмении, я никогда не использовал это, поэтому я не могу вам помочь. Я думаю, вам следует немного разобраться с вашей стороны и создать новый поток, посвященный этому вопросу. – Madeorsk