Jar File löst eine FileNotFoundException aus, Eclipse jedoch nichtJava

Java-Forum
Guest
 Jar File löst eine FileNotFoundException aus, Eclipse jedoch nicht

Post by Guest »

Ich verwende Eclipse für meine Java-Programmierung. Letzten Tag habe ich ein Java-Programm erstellt und den Ordner /res im Stammverzeichnis des Projekts abgelegt. Als ich das Programm auf Eclipse getestet habe, hat es perfekt funktioniert, aber als ich ein erstellt habe Wenn ich eine ausführbare .jar-Datei verwende und sie ausführen möchte, erhalte ich die Ausnahme:

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)
Es löst eine FileNotFoundException aus, aber nur, wenn ich es als .jar-Datei ausführe.
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();
}
}
}

Und das ist die Main.java-Datei:

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();
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post