Я искал некоторые решения для этой проблемы, но похоже, что это не помогло.Проблемы при попытке загрузить файл из контейнера
Я пытаюсь загрузить файл («soundfile.wav»), чтобы затем использовать его в методе playSound. Я хочу, чтобы он загружался из jarfile при его экспорте, поэтому вы не видите файл при загрузке.
package soundplayer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.sound.sampled.*;
import javax.swing.*;
import java.io.*;
public class SoundPlayer extends JFrame
{
private static final long serialVersionUID = 1L;
public String code = "up up down down left right left right b a";
static SoundPlayer soundPlayer;
public static void main(String[] args)
{
soundPlayer = new SoundPlayer();
soundPlayer.setVisible(true);
}
public SoundPlayer()
{
//Look and feel
String lookAndFeel = UIManager.getSystemLookAndFeelClassName();
try {
UIManager.setLookAndFeel(lookAndFeel);
} catch (ClassNotFoundException | InstantiationException| IllegalAccessException | UnsupportedLookAndFeelException e2) {e2.printStackTrace();}
//Window Stuff
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(50, 50, 250, 80);
setTitle("Sound Player Test");
getContentPane().setLayout(null);
//Components
final JTextField typingArea = new JTextField(1);
typingArea.setText("up up down down left right left right b a");
typingArea.setBounds(10, 10, 100, 25);
getContentPane().add(typingArea);
final JLabel label = new JLabel("Now playing: ");
label.setBounds(10, 40, 400, 25);
label.setVisible(false);
getContentPane().add(label);
JButton button = new JButton("Check");
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(typingArea.getText().equals(code))
{
setBounds(50, 50, 250, 110);
label.setVisible(true);
File file = new File("sound.wav");
playSound(file);
}
}
});
button.setBounds(125, 10, 100, 25);
getContentPane().add(button);
}
public static void playSound(File file)
{
try
{
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(file));
clip.start();
}
catch (Exception exc)
{
exc.printStackTrace(System.out);
}
}
}