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
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.