суббота, 9 апреля 2011 г.

Настройка звука в java приложениях. Sun Java 1.6.0 Ubuntu 10.10


Преамбула.
Ubuntu 10.10 поставляется с java машиной OpenJDK. А OpenJDK страдает некоторой недопиленностью. Например, не работает WebSDR.
Но это еще терпимо. А вот отсутствие звука в online-семинарах WebEx Cisco напрягало очень сильно. Пришлось даже запускать дефолт-ось, пока суть да дело. Но победить таки удалось. Методом научного тыка, не без помощи добрых людей.
Установка Sun Java VM http://www.dh1tw.de/websdr-java-ubuntu-linux-how-to-make-it-work
Идеи по запуску Sun Java используя padsp http://www.tuxyturvy.com/blog/index.php?/archives/66-Making-Sun-Java-1.6-play-via-PulseAudio.html
Поехали.


1. Сносим OpenJDK
Смотрим что установлено:
dpkg -l | grep openjdk
dpkg -l | grep icedtea
Сносим что есть, поменяв названия пакетов:
sudo apt-get purge openjdk-6-jdk
sudo apt-get purge icedtea6-plugin
2. Ставим труЪ Sun Java
maverick - название установленной ветки ОС, в данном случае Ubuntu 10.10.
sudo add-apt-repository 'deb http://archive.canonical.com/ maverick partner'
Обновляем базу
sudo apt-get update
Ставим яву (Андроид, прювет! :)))
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
Проверяем версию
java -version
У меня было
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
3. Настраиваем звук.
К сожалению, в нестройных рядах линуксоидов, существует разброд и шатание в выборе используемой звуковой подсистемы. Что, кстати, один из факторов, который убивает интерес девелоперов игр IMHO. Ubuntu 10.10 идет c PulseAudio.
Проблема в том, что Sun Java VM не умеет выводить звук через PulseAudio. Только ALSA или OSS.
Снос PulseAudio и попытка настройки ALSA особого успеха не принесли, так как у меня внешний звук E-MU 0202 USB и куча других звуковух. В принципе настроить можно было, но PulseAudio есть вектор развития. По крайней мере в Ubuntu. Надо приспосабливаться.
Оставляем PulseAudio.
Чтобы звук появился делаем следующее. В Ubuntu 10.10 x64 java лежит по адресу:
/usr/lib/jvm/java-6-sun/jre/bin

Под рутом (т.е. юзаем sudo)
3.1
cd /usr/lib/jvm/java-6-sun/jre/bin
3.2 Переименовываем файл java в java.bin
sudo mv java java.bin
3.3 Создаем файл java следующего содержания
#!/bin/bash
padsp /usr/lib/jvm/java-6-sun/jre/bin/java.bin "$@"
3.4. Делаем его исполняемым
sudo chmod +x java
3.5 Переименовываем файл /usr/lib/jvm/java-6-sun/jre/lib/amd64/libjsoundalsa.so в libjsoundalsa.so.rename (или в что-нить другое). Если ОС другой архитектуры (не x64 догадайтесь что надо сделать).
sudo mv /usr/lib/jvm/java-6-sun/jre/lib/amd64/libjsoundalsa.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libjsoundalsa.so.rename
Суть процесса в том, чтобы запустить java в среде эмулятора OSS от PulseAudio (утилита padsp). Последний пункт заставляет java для вывода звука использовать OSS вместо ALSA, т. к. не может найти библиотеку для ALSA.

Комментариев нет:

Отправить комментарий