Musik Datei lädt nicht?

HackerBanane

Mitglied
Hallo!
Ich programmiere gerade ein kleines Spiel für meine Brüder und möchte natürlich auch Musik einbauen.
Die Musik hab ich bereits erstellt und auch in eine .waw Datei umgewandelt.
Mit Anleitung habe ich eine Klasse erstellt, und probiert die Musik so abzuspielen (siehe unten).
Wenn ich mit Eclipse nur die Klasse starte funktioniert es einwandfrei und die Musik wird abgespielt.
Sobald ich aber das ganze Projekt starte, in dem ich in der Main Klasse die Music.java Klasse mit
"new Music();" hinzufüge passiert rein gar nichts 🙁
Es kommt auch keine Fehlermeldung oder sonst etwas und das Programm läuft ganz normal weiter.
Vielen Dank schonmal für jede Hilfe
LG
Laurens

Java:
import java.io.File;

import java.io.IOException;

import java.util.Scanner;


import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.Clip;

import javax.sound.sampled.LineUnavailableException;

import javax.sound.sampled.UnsupportedAudioFileException;


public class Music {



    public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {

        System.out.println("hallo");

        Scanner scanner = new Scanner(System.in);

    

        File musicFile = new File("audio/FunBanane.wav");

        AudioInputStream inputStream = AudioSystem.getAudioInputStream(musicFile);

        Clip clip = AudioSystem.getClip();

        clip.open(inputStream);

        clip.loop(clip.LOOP_CONTINUOUSLY);

        clip.start();

    

        String response = scanner.next();

    

    }



}
 
Zuletzt bearbeitet von einem Moderator:
in dem ich in der Main Klasse die Music.java Klasse mit
"new Music();" hinzufüge passiert rein gar nichts
Natürlich nicht. Du erzeugst ja einfach ein neues Music-Objekt und führst keine Methode darauf aus. Mach mal aus dem main eine Instanzmethode (z. B. public void play()) und dann schreibst Du in der anderen Klasse:
Java:
Music music = new Music();
music.play();
 
Wenn ich das machen kommt eine Fehlermeldung die sich andauernd wiederholt...

at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:212)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:154)
at java.desktop/com.sun.media.sound.SunFileReader.getAudioInputStream(SunFileReader.java:117)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1062)
at de.hackerbanane.fußballAkkon.Music$1.run(Music.java:30)
at java.base/java.lang.Thread.run(Thread.java:832)
java.io.FileNotFoundException: audio\FunBanane.wav (Das System kann den angegebenen Pfad nicht finden)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:212)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:154)
at java.desktop/com.sun.media.sound.SunFileReader.getAudioInputStream(SunFileReader.java:117)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1062)
 
java.io.FileNotFoundException: audio\FunBanane.wav
Er kann die angegebene Datei nicht finden. Du hast diese relativ zum Ausführungsverzeichnis angegeben. Entweder Du hast einen absoluten Pfad (Wenn die Dateien irgendwohin heruntergeladen werden oder so) oder wenn es feste Ressourcen deiner Applikation sind: Binde sie als Ressourcen in die Applikation ein und nutze den Classloader zum laden z.B. mittels getClass().getResourceAsStream(....).
 
mit getClass().getResource habe ich schlechte erfahrung beim Exportieren gemacht, weil dann der Exportierte .jar file die Datei nicht dabei hat...
Da hat aber das eine mit dem anderen rein gar nichts zu tun. Und ob Du schlechte Erfahrungen gemacht hast, ist jetzt auch nicht der Maßstab. Ressourcen werden über den Classpath (getResource & Co.) geladen und nicht anders.

Abgesehen davon funktioniert das prinzipiell auch mit File, dann musst Du Dein Programm in dem Verzeichnis ausführen, das das Verzeichnis adio mit der Datei FunBanane.wav enthält oder aber Du gibst im Code den absoluten Pfad zur Datei an.
 

Neue Themen


Zurück
Oben