Inteliji продолжает выдавать мне нулевые ошибки при попытке воспроизвести звук в приложении java fx - PullRequest
0 голосов
/ 05 мая 2020

Очень новичок в программировании! Я весь день тянул за волосы, пытаясь включить звук в моем приложении java. Как я могу заставить это работать? Он продолжает выводить нулевые ошибки: S. Может он не распознает мой файл? Я пробовал перетаскивать файл по папкам моего проекта, а также изменил один из его каталогов на «тестовый ресурс root», похоже, не работал. Очень близок к тому, чтобы полностью отказаться от tbh lol

    public class Sound {
    private Clip clip;

    public static Sound sound1 = new Sound("D:\\java projects\\music\\.idea\\res\\battle.wav");


    public Sound(String fileName) {

    try {

        AudioInputStream ais = AudioSystem.getAudioInputStream(Sound.class.getResource(fileName));

        clip = AudioSystem.getClip();

        clip.open(ais);

    } catch (Exception e) {

        e.printStackTrace();

    }

}


public void play() {

    try {

        if (clip != null) {

            new Thread() {

                public void run() {

                    synchronized (clip) {

                        clip.stop();

                        clip.setFramePosition(0);

                        clip.start();

                    }

                }

            }.start();

        }

    } catch (Exception e) {

        e.printStackTrace();

    }

}


public void stop() {

    if (clip == null) return;

    clip.stop();

}


public void loop() {

    try {

        if (clip != null) {

            new Thread() {

                public void run() {

                    synchronized (clip) {

                        clip.stop();

                        clip.setFramePosition(0);

                        clip.loop(Clip.LOOP_CONTINUOUSLY);

                    }

                }

            }.start();

        }

    } catch (Exception e) {

        e.printStackTrace();

    }
}


public boolean isActive() {

    return clip.isActive();

}  

}

Это ошибка, которую я получаю.

java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:222)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1032)
at Sound.<init>(Sound.java:17)
at Sound.<clinit>(Sound.java:10)
at music.main(music.java:50)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
...