«Основное усиление не поддерживается» в OpenJDK
Вопрос
У нас есть проблемы с воспроизведением аудиофайлов с использованием библиотек JavaZoom в OpenJDK в Linux, хотя в Sun JDK они отлично работают.Есть ли обходной путь для этот Исключение «Основное усиление не поддерживается»?
Мохсен
Решение
Я заметил то же самое.Я просто проверяю наличие Sun Java, прежде чем пытаться изменить усиление.Отстой, но, с другой стороны, для моих нужд звук OpenJDK работает намного лучше, чем у Sun.
РЕДАКТИРОВАТЬ:поскольку другие найдут этот ответ через поиск в Интернете, я немного добавлю.PulseAudioMixer OpenJDK в некоторых случаях не соответствует JSAPI.Например, он настаивает на том, чтобы вы остановили() строку перед ее сбросом().Однако JSAPI конкретно говорит, что перед остановкой можно выполнить сброс.Или, в случае, который вы упомянули, реализация импульсного звука утверждает, что поддерживает усиление при вызове isControlSupported, но затем все равно выдает исключение.Это две причины, по которым код JavaZoom не будет работать в OpenJDK.Есть и другие.В некоторых случаях PulseAudioMixer не виноват, он просто выбирает другой маршрут в неопределенных случаях (например, что произойдет, если вы вызовете write() в строке, которая не открыта?!).Я работаю над написанием кода, который будет более надежным, чтобы он работал на OpenJDK.
Другие советы
Есть патч против libbasicplayer-java (применяется для 3.0-4):
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=567856
Однако в OpenJDK по-прежнему есть ошибки с поддержкой усиления:
На этой странице: https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/491784/ в конце есть патч, и теперь он у меня работает.Патч состоит только из Try & Catch.Извините, я больше не могу найти, где автор javazoom разместил исходный код в Интернете.Свяжитесь со мной, если они вам понадобятся.