Code: Select all
java.io.FileNotFoundException: res/music.wav (No such file or directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
at java.base/java.io.FileInputStream.(FileInputStream.java:152)
at java.desktop/com.sun.media.sound.SunFileReader.getAudioInputStream(SunFileReader.java:117)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1060)
at main.MusicPlayer.run(MusicPlayer.java:21)
at java.base/java.lang.Thread.run(Thread.java:1583)
Ich habe gesehen, dass die jar-Datei nur den Ordner src/ enthält, deshalb ist dies nicht der Fall funktioniert.
Ich sage es jemandem und er sagte mir, dass der Ordner res/ im ROOT-Verzeichnis liegen muss.
Kann mir jemand sagen, wie ich eine .jar-Datei erstellen kann?
Wo lege ich sie ab? Die res/-Ordner ?
Außerdem verwende ich diesen Code:
Code: Select all
package main;
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
public class MusicPlayer implements Runnable {
private float volume = 0.3f;
@Override
public void run() {
try {
// InputStream is = getClass().getResourceAsStream("/res/music.wav");
// BufferedInputStream bis = new BufferedInputStream(is);
File bis = new File("res/music.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(bis);
AudioFormat format = ais.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
line.open(format);
line.start();
int nBytesRead = 0;
byte[] abData = new byte[128000];
while (nBytesRead != -1) {
nBytesRead = ais.read(abData, 0, abData.length);
if (nBytesRead >= 0) {
for (int i = 0; i < nBytesRead; i++) {
// Scale the sample by the volume factor
abData[i] = (byte) (abData[i] * volume);
}
line.write(abData, 0, nBytesRead);
}
}
line.drain();
line.close();
ais.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Code: Select all
package main;
public class Main {
public Main () {
Thread musicThread = new Thread(new MusicPlayer());
musicThread.start();
}
public static void main (String[] args) {
new Main();
}
}