Why JLayer Music can't play in Jar file?

48 views Asked by At

This code can play in Eclipse Debug, but Can't play on Jar file. this is a code. this is my Main class.

Music lobby = new Music("LOBBY.mp3", true);

lobby.start();

Can music files be used as 'getClass().getClassLoader().getResource'?

There is Full code.

public class Music extends Thread {

private Player player;
private boolean isLoop;
private File file;
private InputStream fis;
private BufferedInputStream bis;

private URL url;

public Music(String name, boolean isLoop) {

    try {
        this.isLoop = isLoop;
        //file = new File("C:/Users/leesn/git/scg/eclipse-workspace/scgproject/src/music/" + name);
        file = new File(First.class.getResource("../music/" + name).toURI());
        //file = new File(scg.class.getClassLoader().getResource("../music/" + name));
        //url = First.class.getResource("../music/" + name);
        //url = scg.class.getResource("../music/" +name);
        //fis = new FileInputStream(file); //default
        //fis = getClass().getResourceAsStream(name);
        //fis = this.getClass().getResourceAsStream("../music/" +name);
        //fis = scg.class.getClassLoader().getResourceAsStream("../music/" + name); //error 
        //fis = ClassLoader.getSystemResourceAsStream("../music/" + name); //error
        //file = new File();
        //fis = scg.class.getResourceAsStream("../music/" + name);
        fis = new FileInputStream(file);
        bis = new BufferedInputStream(fis);
        player = new Player(bis);
        //player = new Player(getClass().getResourceAsStream("../music/" +name));
        //player = new Player(url.openStream());
    } catch (Exception e) {
        System.out.println(e.getMessage());
        System.out.println("Error with " + name);
        JOptionPane.showMessageDialog(null,"You Cant Play this mp3 file.", "Warning!!",JOptionPane.ERROR_MESSAGE);
    }
}

public void close() {
    isLoop = false;
    player.close();
    this.interrupt();
}

@Override
public void run() {
    try {
        do {
            player.play();
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
            player = new Player(bis);
        } while (isLoop);
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

}

In Eclipse, There is No Exception. but Export JAR file, Can't Play music files.

0

There are 0 answers