Search code examples
androidnoclassdeffounderrorillegalstateexception

java.lang.IllegalStateException: Could not execute method for android:onClick when trying JSONParser


I am not a developer. Just started learning android a few weeks ago. I am running into a

"java.lang.IllegalStateException Could not execute method for android:onClick" error. I have read through similar issues and tried different solutions I read here but still cannot resolve it. Seems like it is crashing right when I try JSONParser parser = new JSONParser() - I think. But I know the 'clickme' triggers when i click the button on the android app.

I would appreciate if someone more experienced can help me.

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    //Thread Policy 
    StrictMode.ThreadPolicy policy = new     StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    }

    public void clickme (View view) {

        JSONParser parser = new JSONParser();

        try {
            Object obj = parser.parse(new FileReader("assets/StockDB.json"));

            JSONObject jsonObject = (JSONObject) obj;

            JSONArray stockInfo = (JSONArray) jsonObject.get("Watchlist");

            for (Object c : stockInfo)
            {

                JSONObject f = (JSONObject) c;
                String m = (String) f.get("Company");
                String t = (String) f.get("Ticker");

                System.out.println(m);
                System.out.println(t);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace(); 
        } 
    }   
}

Logcat:

03-03 17:02:12.415: D/AndroidRuntime(22035): Shutting down VM 03-03 17:02:12.425: E/AndroidRuntime(22035): FATAL EXCEPTION: main 03-03 17:02:12.425: E/AndroidRuntime(22035): Process: com.example.stockiodebug, PID: 22035 03-03 17:02:12.425: E/AndroidRuntime(22035): java.lang.IllegalStateException: Could not execute method for android:onClick 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.view.View$DeclaredOnClickListener.onClick(View.java:4740) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.view.View.performClick(View.java:5697) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.widget.TextView.performClick(TextView.java:10815) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.view.View$PerformClick.run(View.java:22526) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.os.Handler.handleCallback(Handler.java:739) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.os.Handler.dispatchMessage(Handler.java:95) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.os.Looper.loop(Looper.java:158) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.app.ActivityThread.main(ActivityThread.java:7229) 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.reflect.Method.invoke(Native Method) 03-03 17:02:12.425: E/AndroidRuntime(22035): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 03-03 17:02:12.425: E/AndroidRuntime(22035): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 03-03 17:02:12.425: E/AndroidRuntime(22035): Caused by: java.lang.reflect.InvocationTargetException 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.reflect.Method.invoke(Native Method) 03-03 17:02:12.425: E/AndroidRuntime(22035): at android.view.View$DeclaredOnClickListener.onClick(View.java:4735) 03-03 17:02:12.425: E/AndroidRuntime(22035): ... 10 more 03-03 17:02:12.425: E/AndroidRuntime(22035): Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/json/simple/parser/JSONParser; 03-03 17:02:12.425: E/AndroidRuntime(22035): at com.example.stockiodebug.MainActivity.clickme(MainActivity.java:33) 03-03 17:02:12.425: E/AndroidRuntime(22035): ... 12 more 03-03 17:02:12.425: E/AndroidRuntime(22035): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.json.simple.parser.JSONParser" on path: DexPathList[[zip file "/data/app/com.example.stockiodebug-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.stockiodebug-2/lib/arm64, /vendor/lib64, /system/lib64]] 03-03 17:02:12.425: E/AndroidRuntime(22035): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 03-03 17:02:12.425: E/AndroidRuntime(22035): ... 13 more 03-03 17:02:12.425: E/AndroidRuntime(22035): Suppressed: java.lang.ClassNotFoundException: org.json.simple.parser.JSONParser 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.Class.classForName(Native Method) 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 03-03 17:02:12.425: E/AndroidRuntime(22035): at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 03-03 17:02:12.425: E/AndroidRuntime(22035): ... 14 more 03-03 17:02:12.425: E/AndroidRuntime(22035): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available


Solution

  • Go to the "libs" directory of your project and make sure that org.json.simple.parser.JSONParser related .jar is placed there. Such an error would arise when JVM cannot find required class in the classpath.