Trouble shooting
From ZekrWiki
This page is an ongoing effort to address some common problems with already discussed posts on the mailing list.
Contents |
Questions and Answers
Installation
Q: I used to listen to default Zekr recitation (Al-Minshawi (versebyversequran.com)), but it doesn't work any more.
- A: Zekr website is changed from siahe.com/zekr to zekr.org. So the default online recitation of Minshawi doesn't work any more. Please update your recitation pack.
Q: In Ubuntu, When I starts zekr I receive this warning "flashplugin-nonfree is not installed: Quran recitation cannot be used. Install flashplugin-nonfree to enable Quran recitation.". What should I do?
- A: Install flashplugin-nonfree from the multiverse repository through the following steps:
Add extra Ubuntu/Debian repositories using the Software Sources application, which can be found in the menu: System -> Administration -> Software Sources. Check main, universe, and multiverse repositories (They are necessary for getting sun-java and some additional fonts and flashplugin). Run the following commands:
sudo apt-get update sudo apt-get install flashplugin-nonfree
Q: In Ubuntu, When I starts zekr I receive this warning "ttf-me-quran is not installed.: Uthman-Taha experimental theme cannot be used. Install ttf-me-quran to enable Uthman-Taha theme." What should I do?"
- A: Download ttf-me-quran font package from here. Then install it using the following command (Ubuntu example; [xyz] is version and architecture details and should be replaced based on what you have downloaded):
sudo dpkg -i ttf-me-quran_[xyz].deb
Q: On Ubuntu Gutsy/Feisty, although I have flash-plugin-nonfree package installed, Zekr recitation doesn't work
Q: On Debian Sid, recitation doesn't work (player widget is not shown)?
Q: How can I enable Zekr audio support for XULRunner (Debian and Mac)?
Q: Where can I find Zekr source code?
- A: You can find check it out from the CVS, or find it here in almost all downloadable packages from Zekr website: [zekr package]/res/dist/zekr-src.jar. This source package is not included with our Debian package ([1]).
Q: How can I use Zekr together with XULRunner on Mac?
Q: How can I customize Zekr icons?
Q: I'm behind a proxy server. How can I listen to online recitations?
- A: No problem with IE or Safari. On Linux, follow instructions here.
Q: I'm having problems with downloading and installing Zekr translations on Mac OS X using Safari.
- A: If you are downloading Zekr translation packs using your Safari browser, make sure to uncheck "Open safe files after downloading" in Preferences menu and then try again download translation files. See this post on the mailing list.
Usability
Q: How can I test claimed textual miracles in the Quran (for example number of word Rajul, and Imra'at)?
Q: How can I have Quran text scrollbar on the right side of the screen on Windows, IE?
Add-ons
There is a blocking issue in Zekr 0.7.1 on Mac OS X which prevents user adding a new translation pack. There is a bug fix available (until the next version is out) for download. Please copy (overwrite) the following files inside Zekr.app/Contents/Resources/Java.
There was also a non-blocking issue discovered shortly after 0.7.1 release, which caused Bookmark sets not to save correctly. Please download the following files and put (replace) them in your [zekr installation folder]/dist as a patch:
Exceptions
Failed to execute runnable
In some cases, user may face the following exception:
org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalThreadStateException))
org.eclipse.swt.SWT.error(Unknown Source)
org.eclipse.swt.SWT.error(Unknown Source)
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
net.sf.zekr.ui.BaseForm.loopEver(BaseForm.java:36)
net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:63)
net.sf.zekr.ZekrMain.main(ZekrMain.java:88)
This happens mainly because of Zekr failing to check zekr.org if a newer version is available. User may however disable it, to workaround this unpleasant behavior (this is disabled by default as of Zekr 0.7.5). Here is the instruction:
1. edit C:\Documents and Settings\<username>\.zekr\config\config.properties (assuming that you are a Win XP/2k. On Vista, C:\Users\<username>\.zekr, on Mac OS X, /Users/<username>/.zekr, and on Linux the default home folder of Zekr is /home/<username/.zekr).
2. change update.enable to false:
update.enable = false
3. start Zekr.
NullPointerException
After adding an invalid recitation to Zekr, you may see an exception like the following the next time you start Zekr:
java.lang.NullPointerException
at java.lang.String.compareTo(Unknown Source)
at net.sf.zekr.ui.QuranFormMenuFactory$14.compare(QuranFormMenuFactory.java:777)
at net.sf.zekr.ui.QuranFormMenuFactory$14.compare(QuranFormMenuFactory.java:775)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at net.sf.zekr.ui.QuranFormMenuFactory.createOrUpdateRecitationMenu(QuranFormMenuFactory.java:775)
at net.sf.zekr.ui.QuranFormMenuFactory.getQuranFormMenu(QuranFormMenuFactory.java:533)
...
To fix it, remove .properties file you added to Zekr from either of the following locations manually:
- workspace/audio
- <zekr installation directory>/res/audio
Now start Zekr again.
Linux audio problems
Linux users may see exceptions like this:
java.lang.IllegalArgumentException: Master Gain not supported org.classpath.icedtea.pulseaudio.PulseAudioLine.getControl(PulseAudioLine.java:89) org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.getControl(PulseAudioSourceDataLine.java:51) javazoom.jlgui.basicplayer.BasicPlayer.openLine(Unknown Source) javazoom.jlgui.basicplayer.BasicPlayer.initLine(Unknown Source) javazoom.jlgui.basicplayer.BasicPlayer.startPlayback(Unknown Source) javazoom.jlgui.basicplayer.BasicPlayer.play(Unknown Source) net.sf.zekr.engine.audio.DefaultPlayerController.play(DefaultPlayerController.java:83) net.sf.zekr.ui.AudioPlayerUiController.playerTogglePlayPause(AudioPlayerUiController.java:163) net.sf.zekr.engine.audio.ui.AudioPlayerForm$5.widgetSelected(AudioPlayerForm.java:325) org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228) org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1176) org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3493) org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3112) net.sf.zekr.ui.BaseForm.loopEver(BaseForm.java:36) net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:63) net.sf.zekr.ZekrMain.main(ZekrMain.java:88)
This exception is a bug in libbasicplayer-java and was fixed some time ago. A patch was submitted and applied to the package. If you are not on Ubuntu 10.4 or newer, you can fix it manually using instructions here.
After fixing this problem, another issue may occur:
net.sf.zekr.engine.audio.PlayerException: javazoom.jlgui.basicplayer.BasicPlayerException: Gain control not supported at net.sf.zekr.engine.audio.DefaultPlayerController.setGain(DefaultPlayerController.java:187) at net.sf.zekr.engine.audio.DefaultPlayerController.setVolume(DefaultPlayerController.java:243) at net.sf.zekr.engine.audio.ui.AudioPlayerForm$14.mouseUp(AudioPlayerForm.java:553) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:213) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3552) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3171) at net.sf.zekr.ui.BaseForm.loopEver(BaseForm.java:34) at net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:63) at net.sf.zekr.ZekrMain.main(ZekrMain.java:91) Caused by: javazoom.jlgui.basicplayer.BasicPlayerException: Gain control not supported at javazoom.jlgui.basicplayer.BasicPlayer.setGain(Unknown Source) at net.sf.zekr.engine.audio.DefaultPlayerController.setGain(DefaultPlayerController.java:185) ... 10 more
This exceptions happens when you (or Zekr) try to change audio volume level. Not only this problem but also usual hanging when you normally play/pause/stop audio in Zekr, happens because of several bugs in OpenJDK. In order to resolve it, you should switch to Sun Java either globally or locally (only for Zekr). Instructions here tell you about globally switching to Sun Java. You can also use workspace/zekrrc-debian to change Zekr's Java (instructions here).
After that, you may see Audio Device Unavailable exceptions like this, which happens for Sun Java:
14:17:48 [ERROR] (AudioPlayerUiController:123) - Error occured in play-pause method. net.sf.zekr.engine.audio.PlayerException: javazoom.jlgui.basicplayer.BasicPlayerException: Cannot init line at net.sf.zekr.engine.audio.DefaultPlayerController.play(DefaultPlayerController.java:162) at net.sf.zekr.ui.AudioPlayerUiController.playerTogglePlayPause(AudioPlayerUiController.java:211) at net.sf.zekr.engine.audio.ui.AudioPlayerForm$8.widgetSelected(AudioPlayerForm.java:455) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3552) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3171) at net.sf.zekr.ui.BaseForm.loopEver(BaseForm.java:34) at net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:63) at net.sf.zekr.ZekrMain.main(ZekrMain.java:91) Caused by: javazoom.jlgui.basicplayer.BasicPlayerException: Cannot init line at javazoom.jlgui.basicplayer.BasicPlayer.startPlayback(Unknown Source) at javazoom.jlgui.basicplayer.BasicPlayer.play(Unknown Source) at net.sf.zekr.engine.audio.DefaultPlayerController.play(DefaultPlayerController.java:159) ... 10 more Caused by: javax.sound.sampled.LineUnavailableException: Audio Device Unavailable at com.sun.media.sound.HeadspaceMixer.nResume(Native Method) at com.sun.media.sound.HeadspaceMixer.implOpen(HeadspaceMixer.java:346) at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:286) at com.sun.media.sound.AbstractMixer.open(AbstractMixer.java:323) at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:103) at com.sun.media.sound.MixerSourceLine.open(MixerSourceLine.java:39) at javazoom.jlgui.basicplayer.BasicPlayer.openLine(Unknown Source) at javazoom.jlgui.basicplayer.BasicPlayer.initLine(Unknown Source) ... 13 more
This error happens because Java audio tries to have exclusive access to sound adapter, and any other program attempting to open a sound device will fail (if the program is already open, Zekr will fail with above exception). You can workaround this issue by wrapping Zekr with padsp. So, first install pulseaudio-utils:
sudo apt-get install pulseaudio-utils
Then, open a console and write the following command (if you are using Zekr .tar.gz package, you should run zekr.sh instead of zekr):
padsp zekr

