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.