#java #audio #java-7 #javasound
#java #Аудио #java-7 #javasound
Вопрос:
Я опубликовал исправление проблемы (описано ниже), но не смог подтвердить, решает ли это проблему. Может ли кто-нибудь с Java 7 попробовать следующий апплет и отчитаться? Это было бы ОЧЕНЬ ценно.
Проблема, о которой мне сообщили, заключалась в том, что верхний ряд кнопок, которые требуют загрузки звукового клипа из поврежденного ресурса, не работают. Ошибка указывает на строку, в которой читается аудиофайл, и говорит, что генерируется исключение ввода-вывода «mark / reset».
Этот код, работающий для Java 6, не работает для Java 7. Далее следует оскорбительное утверждение:
AudioInputStream ais = AudioSystem.getAudioInputStream(
AudioMixer.class.getResourceAsStream(fileName));
Внутренняя область возвращает InputStream
, и я думаю, что именно здесь возникает проблема «заметности». Об этой проблеме сообщалось в базе данных ошибок Oracle как о проблеме обратной совместимости, но ей был присвоен низкий приоритет.
Я перекодировал вышесказанное следующим образом:
URL url = AudioMixer.class.getResource(fileName);
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
В AudioSystem API нет ничего, что упоминало бы, что этот метод будет генерировать исключения ввода-вывода «mark / reset». Итак, я надеюсь. Но я не смог это подтвердить!
Комментарии:
1. «О проблеме сообщалось в базе данных ошибок Oracle как о проблеме обратной совместимости, но ей был присвоен низкий приоритет». Какой идентификатор ошибки / URL?
2. КСТАТИ — AFAIU возможность поддержки пометки / сброса в URL зависит от сервера. Некоторые поддерживают это, некоторые нет. Надежный способ гарантировать входной поток mark (able) / reset (способный) — это прочитать весь,
byte[]
затем передать это конструктору aByteArrayInputStream
. О, и у меня не установлена Java 7, поэтому я не могу протестировать ваш апплет, извините. (Некоторое время назад я пробовал J7, и когда в моем приложении DukeBox произошел сбой. Я с отвращением удалил его — буду ждать менее глючный вариант.)3. Как мне пометить это как «решаемое»?
Ответ №1:
Пользователь Java 7, который сообщил о проблеме, связался со мной и показал большой палец вверх. Итак, я предполагаю, что диагностика и исправление проблемы обратной совместимости верны, и больше не ищу тестировщиков (если только вы не заинтересованы просто в проверке AudioMixer).