Got a java.lang.ExceptionInInitializerError
<p>I downloaded the source code of an open source application. It's supposed to work fine. I did not change anything in the code. I do not have errors in the app, but when I try to launch it, it just crashes (both on emulator, and on real device).</p>

<p>This is the whole LogCat:</p>

<pre><code>03-05 17:29:30.521: E/AndroidRuntime(410): FATAL EXCEPTION: main 
03-05 17:29:30.521: E/AndroidRuntime(410): java.lang.ExceptionInInitializerError
03-05 17:29:30.521: E/AndroidRuntime(410):  at com.grafian.quran.App.loadFont(App.java:73)
03-05 17:29:30.521: E/AndroidRuntime(410):  at com.grafian.quran.App.onCreate(App.java:41)
03-05 17:29:30.521: E/AndroidRuntime(410):  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
03-05 17:29:30.521: E/AndroidRuntime(410):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3272)
03-05 17:29:30.521: E/AndroidRuntime(410):  at android.app.ActivityThread.access$2200(ActivityThread.java:117)
03-05 17:29:30.521: E/AndroidRuntime(410):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
03-05 17:29:30.521: E/AndroidRuntime(410):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-05 17:29:30.521: E/AndroidRuntime(410):  at android.os.Looper.loop(Looper.java:130)
03-05 17:29:30.521: E/AndroidRuntime(410):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-05 17:29:30.521: E/AndroidRuntime(410):  at java.lang.reflect.Method.invokeNative(Native Method)
03-05 17:29:30.521: E/AndroidRuntime(410):  at java.lang.reflect.Method.invoke(Method.java:507)
03-05 17:29:30.521: E/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-05 17:29:30.521: E/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-05 17:29:30.521: E/AndroidRuntime(410):  at dalvik.system.NativeStart.main(Native Method)
03-05 17:29:30.521: E/AndroidRuntime(410): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load render: findLibrary returned null
03-05 17:29:30.521: E/AndroidRuntime(410):  at java.lang.Runtime.loadLibrary(Runtime.java:429)
03-05 17:29:30.521: E/AndroidRuntime(410):  at java.lang.System.loadLibrary(System.java:554)
03-05 17:29:30.521: E/AndroidRuntime(410):  at com.grafian.quran.text.NativeRenderer.&lt;clinit&gt;(NativeRenderer.java:42)
</code></pre>

<p>My code is :</p>



<pre><code>public class App extends Application {

public static String PACKAGE_NAME;

final public Config config = new Config();
final public Bookmark bookmark = new Bookmark();
final public MetaData metaData = new MetaData();

final public QuranText quranText = new QuranText();
final public QuranText translation = new QuranText();
final public QuranWord quranWord = new QuranWord();

public static App app;

private int loadedFont = -1;

@Override
public void onCreate() {
    super.onCreate();

    PACKAGE_NAME = getPackageName();
    app = this;

    config.load(this);
    bookmark.load(this);

    loadFont();
}

private String getQuranTextPath() {
    return new File(getExternalFilesDir(null), "quran-uthmani").toString();
}

private String getTranslationPath() {
    return new File(getExternalFilesDir(null), config.lang).toString();
}

private String getQuranWordPath() {
    return new File(getExternalFilesDir(null), "words_en").toString();
}

public boolean loadFont() {
    if (loadedFont != config.fontArabic) {
        String name;
        switch (config.fontArabic) {
        case Config.FONT_NASKH:
            name = "naskh.otf";
            break;
        case Config.FONT_NOOREHUDA:
            name = "noorehuda.ttf";
            break;
        case Config.FONT_ME_QURAN:
            name = "me_quran.ttf";
            break;
        default:
            name = "qalam.ttf";
        }
        try {
            NativeRenderer.loadFont(getAssets().open(name));
            loadedFont = config.fontArabic;
        } catch (IOException e) {
            e.printStackTrace();
            loadedFont = -1;
            return false;
        }
    }
    return true;
}

public boolean loadAllData() {
    return loadFont()
            &amp;&amp; quranText.load(this, getQuranTextPath())
            &amp;&amp; translation.load(this, getTranslationPath())
            &amp;&amp; quranWord.load(this, getQuranWordPath());
}
</code></pre>
