Reproduzir som Java

Já consigo inserir som nos meus projetos java porem somente usando links externos gostaria de saber se tem como eu puxar o arquivo de som da mesma pasta do código.

Meu código:

    import java.net.URL;
    import javax.swing.*;
    import javax.sound.sampled.*;
    import java.io.*;

    public class Som {

        public static void main(String[] args) throws Exception {

            // Carrega o arquivo de áudio (não funciona com .mp3, só .wav) 
            URL oUrl = new URL("https://www.dropbox.com/s/xf7jhrzovq8wt09/beep-02.wav?dl=1");
            Clip oClip = AudioSystem.getClip();
            AudioInputStream oStream = AudioSystem.getAudioInputStream(oUrl);
            oClip.open(oStream);

            oClip.loop(0); // Toca uma vez
            

            // Para a execução (senão o programa termina antes de ouvir o som)
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
         
            }
        });
    }
}

Tipo trocar a URL do arquivo pelo nome do arquivo que esta na mesma pasta do projeto.

Não use URL, use InputStream

String resource = "/<caminho>";
InputStream input = getClass().getResourceAsStream(resource);
AudioInputStream audioInput = AudioSystem.getAudioInputStream(input);

Troque o <caminho> pelo caminho relativo do arquivo em relação ao classpath da aplicação.

erro no:

InputStream input = getClass().getResourceAsStream(resource);

erro:

error: non-static method getClass() cannot be referenced from a static context
InputStream input = getClass().getResourceAsStream(resource);
^
1 error

Sim o getClass() não é estático então não pode ser acessado diretamente de dentro de um código estático.

Se você insiste em implementar seu programa dentro de um método estático, faça assim Som.class.getResourceAsStream(resource).

1 curtida