我不是开发人员。几周前刚开始学习android。我遇到了
" java.lang.IllegalStateException无法执行android的方法:onClick" 错误。我已经阅读了类似的问题并尝试了我在这里阅读的不同解决方案,但仍然无法解决它。当我尝试 JSONParser parser = new JSONParser()时,似乎它正在崩溃 - 我想。但是当我点击Android应用程序上的按钮时,我知道' clickme' 触发器。
如果有经验的人可以帮助我,我将不胜感激。
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):关闭VM 03-03 17:02:12.425:E / AndroidRuntime(22035):致命异常:主要 03-03 17:02:12.425:E / AndroidRuntime(22035):处理:com.example.stockiodebug,PID:22035 03-03 17:02:12.425:E / AndroidRuntime(22035):java.lang.IllegalStateException:无法执行android的方法:onClick 03-03 17:02:12.425:E / AndroidRuntime(22035):在android.view.View $ DeclaredOnClickListener.onClick(View.java:4740) 03-03 17:02:12.425:E / AndroidRuntime(22035):在android.view.View.performClick(View.java:5697) 03-03 17:02:12.425:E / AndroidRuntime(22035):在android.widget.TextView.performClick(TextView.java:10815) 03-03 17:02:12.425:E / AndroidRuntime(22035):在android.view.View $ PerformClick.run(View.java:22526) 03-03 17:02:12.425:E / AndroidRuntime(22035):在android.os.Handler.handleCallback(Handler.java:739) 03-03 17:02:12.425:E / AndroidRuntime(22035):在android.os.Handler.dispatchMessage(Handler.java:95) 03-03 17:02:12.425:E / AndroidRuntime(22035):在android.os.Looper.loop(Looper.java:158) 03-03 17:02:12.425:E / AndroidRuntime(22035):在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):引起: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):在android.view.View $ DeclaredOnClickListener.onClick(View.java:4735) 03-03 17:02:12.425:E / AndroidRuntime(22035):......还有10个 03-03 17:02:12.425:E / AndroidRuntime(22035):引起:java.lang.NoClassDefFoundError:解析失败: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更多 03-03 17:02:12.425:E / AndroidRuntime(22035):引起:java.lang.ClassNotFoundException:找不到类" 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更多 03-03 17:02:12.425:E / AndroidRuntime(22035):抑制: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更多 03-03 17:02:12.425:E / AndroidRuntime(22035):引起:java.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有可用的堆栈跟踪
答案 0 :(得分:0)
发生此错误是因为它抛出ClassNotFoundException
,在异常链中生成IllegalStateException
。
在您的代码中找不到org.json.simple.parser.JSONParser
。
尝试实现JsonParser库。
答案 1 :(得分:0)
转到项目的“libs”目录,确保将org.json.simple.parser.JSONParser相关的.jar放在那里。当JVM在类路径中找不到所需的类时,就会出现这样的错误。