Alhamdulillah akhirnya bisa juga menjalankan aplikasi Zekr di Ubuntu 20.04 LTS. Zekr adalah aplikasi Al Quran di komputer. Dengan zekr, kita bisa membaca teks Al Quran, lengkap dengan fitur terjemahnya. Dengan zekr, kita juga dapat mendengarkan suara bacaan Al Quran itu secara offline setelah mendownloadnya ke komputer kita.
Langkah yang saya lakukan untuk install zekr di Ubuntu 20.04 LTS:
Downloads zekr dari halaman http://zekr.org/download.html
Saya memilih Zekr 1.1.0 for Linux x64 (7.6MB)
Ekstrak files tar.gz hasil downloadan tadi.
Jalankan terminal dan pindah ke direktori zekr berada, dalam hal ini saya pindah ke direktori Downloads/zekr.
Jalankan perintah ./zekr.sh
muncul error:
org.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.browser.Mozilla.initMozilla(Unknown Source)
at org.eclipse.swt.browser.Mozilla.create(Unknown Source)
at org.eclipse.swt.browser.Browser.<init>(Unknown Source)
at net.sf.zekr.ui.QuranForm.makeFrame(QuranForm.java:628)
at net.sf.zekr.ui.QuranForm.init(QuranForm.java:340)
at net.sf.zekr.ui.QuranForm.<init>(QuranForm.java:319)
at net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:51)
at net.sf.zekr.ZekrMain.main(ZekrMain.java:94)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.browser.Mozilla.initMozilla(Unknown Source)
at org.eclipse.swt.browser.Mozilla.create(Unknown Source)
at org.eclipse.swt.browser.Browser.<init>(Unknown Source)
at net.sf.zekr.ui.QuranForm.makeFrame(QuranForm.java:628)
at net.sf.zekr.ui.QuranForm.init(QuranForm.java:340)
at net.sf.zekr.ui.QuranForm.<init>(QuranForm.java:319)
at net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:51)
at net.sf.zekr.ZekrMain.main(ZekrMain.java:94)
klik ok.
untuk mengatasi error itu, download SWT and Binary and Source dari alamat: https://archive.eclipse.org/eclipse/downloads/drops4/R-4.9-201809060745/
tersedia pilihan untuk linux 32 bit atau 64 bit. Saya memilih 64 bit sesuai OS Ubuntu 20.04 saya, yaitu https://archive.eclipse.org/eclipse/downloads/drops4/R-4.9-201809060745/download.php?dropFile=swt-4.9-gtk-linux-x86_64.zip.
Ekstrak file zip itu. Lalu copykan file swt.jar ke dalam folder Downloads/zekr/lib.
Replace saja file swt.jar nya.
Setelah itu kembali jalankan perintah ./zekr.sh di direktori Download/zekr.
Tara..
Selanjutnya untuk menambahkan audio download recitation file dari alamat http://zekr.org/resources.html.
Pada aplikasi zekr, pilih Tools > Add > Recitation, pilih file zip yang tadi didownload dan klik OK.
Kemudian pada menu Audio, pilih Recitation, pilih nama Imam sesuai file recitation yg sudah kita masukkan tadi misalnya Abu Bakr Ash Shatri.
Sekarang jalankan play audio. Muncul error:
java.lang.NoClassDefFoundError: org/tritonus/share/sampled/convert/TMatrixFormatConversionProvider
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1209)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
at java.desktop/com.sun.media.sound.JSSecurityManager$2.run(JSSecurityManager.java:147)
at java.desktop/com.sun.media.sound.JSSecurityManager$2.run(JSSecurityManager.java:144)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/com.sun.media.sound.JSSecurityManager.getProviders(JSSecurityManager.java:151)
at java.desktop/com.sun.media.sound.JDK13Services.getProviders(JDK13Services.java:102)
at java.desktop/javax.sound.sampled.AudioSystem.getProviders(AudioSystem.java:1517)
at java.desktop/javax.sound.sampled.AudioSystem.getFormatConversionProviders(AudioSystem.java:1266)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:884)
at javazoom.jlgui.basicplayer.BasicPlayer.createLine(Unknown Source)
at javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(Unknown Source)
at javazoom.jlgui.basicplayer.BasicPlayer.open(Unknown Source)
at net.sf.zekr.engine.audio.DefaultPlayerController.open(DefaultPlayerController.java:131)
at net.sf.zekr.engine.audio.DefaultPlayerController.open(DefaultPlayerController.java:145)
at net.sf.zekr.ui.AudioPlayerUiController.playerOpenAyaAudio(AudioPlayerUiController.java:249)
at net.sf.zekr.ui.AudioPlayerUiController.playerPlaySpecialItemIfNeeded(AudioPlayerUiController.java:158)
at net.sf.zekr.ui.AudioPlayerUiController.playerTogglePlayPause(AudioPlayerUiController.java:213)
at net.sf.zekr.engine.audio.ui.AudioPlayerForm$13.widgetSelected(AudioPlayerForm.java:719)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5797)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1374)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5051)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4583)
at net.sf.zekr.ui.BaseForm.loopEver(BaseForm.java:36)
at net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:63)
at net.sf.zekr.ZekrMain.main(ZekrMain.java:94)
Caused by: java.lang.ClassNotFoundException: org.tritonus.share.sampled.convert.TMatrixFormatConversionProvider
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 42 more
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1209)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
at java.desktop/com.sun.media.sound.JSSecurityManager$2.run(JSSecurityManager.java:147)
at java.desktop/com.sun.media.sound.JSSecurityManager$2.run(JSSecurityManager.java:144)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/com.sun.media.sound.JSSecurityManager.getProviders(JSSecurityManager.java:151)
at java.desktop/com.sun.media.sound.JDK13Services.getProviders(JDK13Services.java:102)
at java.desktop/javax.sound.sampled.AudioSystem.getProviders(AudioSystem.java:1517)
at java.desktop/javax.sound.sampled.AudioSystem.getFormatConversionProviders(AudioSystem.java:1266)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:884)
at javazoom.jlgui.basicplayer.BasicPlayer.createLine(Unknown Source)
at javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(Unknown Source)
at javazoom.jlgui.basicplayer.BasicPlayer.open(Unknown Source)
at net.sf.zekr.engine.audio.DefaultPlayerController.open(DefaultPlayerController.java:131)
at net.sf.zekr.engine.audio.DefaultPlayerController.open(DefaultPlayerController.java:145)
at net.sf.zekr.ui.AudioPlayerUiController.playerOpenAyaAudio(AudioPlayerUiController.java:249)
at net.sf.zekr.ui.AudioPlayerUiController.playerPlaySpecialItemIfNeeded(AudioPlayerUiController.java:158)
at net.sf.zekr.ui.AudioPlayerUiController.playerTogglePlayPause(AudioPlayerUiController.java:213)
at net.sf.zekr.engine.audio.ui.AudioPlayerForm$13.widgetSelected(AudioPlayerForm.java:719)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5797)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1374)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5051)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4583)
at net.sf.zekr.ui.BaseForm.loopEver(BaseForm.java:36)
at net.sf.zekr.ZekrMain.startZekr(ZekrMain.java:63)
at net.sf.zekr.ZekrMain.main(ZekrMain.java:94)
Caused by: java.lang.ClassNotFoundException: org.tritonus.share.sampled.convert.TMatrixFormatConversionProvider
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 42 more
klik ok.
Sekarang masalahnya aplikasi antarmuka zekr berhasil dijalankan di Ubuntu 20.04 LTS tetapi audio tidak bisa diputar.
Untuk mengatasi error di atas, terlebih dahulu download file tritonus utils jar dari alamat http://www.java2s.com/Code/JarDownload/tritonus/tritonus-utils.jar.zip
Ekstrak file zip tadi dan copykan file tritonus-utils.jar ke dalam folder Downloads/zekr/lib
Sekarang pada folder zekr, klik kanan pada file zekr.sh, pilih Open with Text Editor.
Ganti baris CLASS_PATH= lib... dst dengan:
CLASS_PATH=lib/log4j-1.2.8.jar:lib/swt.jar:lib/commons-collections-3.2.1.jar:lib/commons-codec-1.3.jar:lib/commons-io-1.4.jar:lib/commons-lang-2.4.jar:lib/commons-logging-1.0.4.jar:lib/commons-configuration-1.6.jar:lib/velocity-1.6.2.jar:lib/lucene-core-3.0.0.jar:lib/lucene-highlighter-3.0.0.jar:lib/lucene-snowball-3.0.0.jar:lib/lucene-memory-3.0.0.jar:lib/lucene-misc-3.0.0.jar:lib/mp3spi-1.9.4.jar:lib/vorbisspi-1.0.3.jar:lib/jlayer-1.0.1.jar:lib/basicplayer-3.0.jar:lib/tritonus-share-0.3.6.jar:lib/tritonus-jorbis-0.3.6.jar:lib/tritonus-utils.jar:lib/jorbis-0.0.17.jar:lib/jspeex-0.9.7.jar:dist/zekr.jar
klik save dan exit.
Sekarang jalankan kembali zekr dengan perintah ./zekr.sh
Lalu klik play audio. Audio recitation Al Quran berhasil dimainkan.
Untuk menambahkan shortcut Zekr pada daftar aplikasi di Ubuntu 20.04 LTS, pertama kita install Alacarte Menu Editor dengan perintah:
sudo apt-get install alacarte
Setelah berhasil diintall, jalankan alacarte, atau Main Menu dari daftar aplikasi di Ubuntu 20.04. Di bagian paling kanan, pilih New Item, tuliskan:
Name: Zekr
Command: bash Downloads/zekr/zekr.sh
Comment: open-source Quranic application
klik OK. Close.
Al-hamdullIllah.
ReplyDeleteBarakAllahou fik brother. JazakAllahou kheir.
bang...file swt nya sdh g bisa di download...apa mungkin sudah didelete yah filenya?
ReplyDeleteSaya berhasil download di link berikut:
Deletehttps://archive.eclipse.org/eclipse/downloads/drops4/R-4.9-201809060745/download.php?dropFile=swt-4.9-gtk-linux-x86_64.zip
saya juga berhasil.
Deletetapi di MX Linux
makasih ya
saya pakai linux mint 21.1 x86_64 nggak jalan Bang... ðŸ˜
ReplyDelete