← Back to team overview

openjdk team mailing list archive

[Bug 525883] Re: Java applet audio with pulseaudio broken (local apps likely broken)


Sounds like the same problem in 10.10 for me.

Last week (on 10.04) I attended a Webex - Java - webinar on OpenERP.
Audio was fine.

This week, I attempted to join a further webinar from the same company
again via webex. I am now running a fresh 10.10 64bit Desktop install.

The conference loads OK but sound fails to work. When I try to join the
audio I get the following message:

"The Audio Device is Unaccessible Now"

Trying a simple java audio device
also fails to produce any audio but no error messages to the user.

I tried adding a "Policy" as above, but this didn't seem to make any
difference. The statement I added was:

// Added by me to try and fix broken audio in Webex.
// Link to source: https://lists.launchpad.net/openjdk/msg02992.html
grant {
  permission java.lang.RuntimePermission
  permission java.io.FilePermission
        "/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libpulse-java.so", "read";

Java applet audio with pulseaudio broken (local apps likely broken)
You received this bug notification because you are a member of OpenJDK,
which is subscribed to openjdk-6 in ubuntu.

Status in “openjdk-6” package in Ubuntu: Invalid

Bug description:
Binary package hint: openjdk-6-jre

Problem: No audio output from applets in firefox using pulseaudio.

charm% lsb_release -rd
Description:    Ubuntu 9.10
Release:        9.10

This bug is in a combination of packages:
 - openjdk-6-jre 6b16-1.6.1-3ubuntu1
 - openjdk-6-jre-lib 6b16-1.6.1-3ubuntu1
 - icedtea6-plugin 6b16-1.6.1-3ubuntu1

  - Webex meetings
  - http://www.javazoom.net/applets/tinyplayer/tinyplayer.html

Doing some investigation, I found two things:

 - There is a security policy problem for applets using sound
 - There is a packaging problem with the location of the native pulse library for java

Working backwards using java stacktraces on stderr, I found the following permissions 
were necessary to get audio output from java:

$ cat .java.policy
grant {
  permission java.lang.RuntimePermission 
  permission java.io.FilePermission 
        "/usr/lib/jvm/java-6-openjdk/jre/lib/ext/i386/libpulse-java.so", "read";

Then, I found that the .so file didn't actually exist! Instead, it's in a different directory:

$ dpkg -L openjdk-6-jre | grep pulse

Making a symbolic link fixed everything and made it work:

$ ls -l /usr/lib/jvm/java-6-openjdk/jre/lib/ext/i386
lrwxrwxrwx 1 root root 7 2010-02-22 11:19 /usr/lib/jvm/java-6-openjdk/jre/lib/ext/i386 -> ../i386

I can't say how the policies should be managed for applets, but even regular java programs aren't likely to work until the packaging is fixed.