Java.lang.ClassCastException: com.sun.media.sound.DirectAudioDevice$DirectClip невозможно привести к javax.sound.sampledJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java.lang.ClassCastException: com.sun.media.sound.DirectAudioDevice$DirectClip невозможно привести к javax.sound.sampled

Сообщение Anonymous »

Сейчас я работаю над новым звуковым движком для своей игры, так как старый плох. Для этого я использую SourceDataLine, но при выполнении он возвращает:

Код: Выделить всё

java.lang.ClassCastException: com.sun.media.sound.DirectAudioDevice$DirectClip cannot be cast to javax.sound.sampled.SourceDataLine
at com.glowiak.aws.SoundLibrary.play(Main.java:1360)
at com.glowiak.aws.UIButton.loop(Main.java:475)
at com.glowiak.aws.Renderer.paintComponent(Main.java:174)
at javax.swing.JComponent.paint(JComponent.java:1056)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290)
at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Код движка:

Код: Выделить всё

// the second option from https://www.baeldung.com/java-play-sound modified to fit my engine idea
class SoundLibrary
{
public static final int BUFFER_SIZE = 4096;
public ArrayList urls;
public void registerSound(String fp)
{
urls.add(fp);
}
public boolean play(int i)
{
try {
InputStream is = getClass().getResourceAsStream(urls.get(urls.size() - 1));
AudioInputStream ais = AudioSystem.getAudioInputStream(is);
SourceDataLine.Info dli = new DataLine.Info(Clip.class, ais.getFormat());
SourceDataLine sdl = (SourceDataLine)AudioSystem.getLine(dli);
sdl.open(ais.getFormat());
sdl.start();
byte[] buffer = new byte[BUFFER_SIZE];
int rb = -1;
while ((rb = ais.read(buffer)) != -1)
{
sdl.write(buffer, 0, rb);
}
sdl.drain();
sdl.close();
ais.close();
return true;
} catch (Exception e)
{
e.printStackTrace();
return false;
}
}

public static void cleanup()
{
}

public SoundLibrary()
{
this.urls = new ArrayList();
this.registerSound("/resources/sound/bow.wav");
this.registerSound("NULL");
this.registerSound("/resources/sound/buttonpress.wav");
}
}
там.
Может кто-нибудь объяснить, что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/746 ... rectclip-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»