dat_dude
dat_dude

Reputation: 67

Java android application FATAL EXCEPTION on click on button

I have an application where there is two textfields and and button. Here they are in xml:

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:ems="10"
        android:id="@+id/editText" android:layout_gravity="center_horizontal" android:phoneNumber="true"
        android:hint="Номер телефона"/>
<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/editText2" android:password="true" android:hint="Пароль"/>
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Войти"
        android:onClick="sendMessage"
        android:id="@+id/button" android:layout_gravity="center_horizontal"/>

Here is also sendMessage and generateJSON functions:

public void sendMessage(View view)
{
    Intent intent = new Intent(TestActivity.this, RegActivity.class);
    startActivity(intent);
    String userDataJSON=this.generateJson(this.login.getText().toString(),this.password.getText().toString()) ;
    System.out.println(userDataJSON);
}

private String generateJson(String login, String password){
    JSONObject j = new JSONObject();
    j.put("login",login);
    j.put("password",password);
    String res=j.toString();
    return res;
}

If I just output this.login.getText().toString() and this.password.getText().toString() it outputs fine. But if I try to output userDataJSON on click, there is a mistake like this:

01-31 22:19:16.137    2043-2043/com.example.test E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.test, PID: 2043
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:4007)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4002)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lnet/sf/json/JSONObject;
            at com.example.test.TestActivity.generateJson(TestActivity.java:30)
            at com.example.test.TestActivity.sendMessage(TestActivity.java:25)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4002)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "net.sf.json.JSONObject" on path: DexPathList[[zip file "/data/app/com.example.test-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
            at com.example.test.TestActivity.generateJson(TestActivity.java:30)
            at com.example.test.TestActivity.sendMessage(TestActivity.java:25)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4002)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    Suppressed: java.lang.ClassNotFoundException: net.sf.json.JSONObject
            at java.lang.Class.classForName(Native Method)
            at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
            at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
            ... 16 more
     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

What's the problem? Also in app there is such mistake: App screen So what's wrong in my app? Everything seems to be right.

Upvotes: 0

Views: 299

Answers (1)

Willis
Willis

Reputation: 5336

Have you made all of the proper imports? You are getting a ClassNotFoundException whilst trying to call net.sf.json.JSONObject.

According to the json-lib homepage you must have, at minimum, the following dependencies in your class path:

  • jakarta commons-lang 2.5
  • jakarta commons-beanutils 1.8.0
  • jakarta commons-collections 3.2.1
  • jakarta commons-logging 1.1.1
  • ezmorph 1.0.6

There is an existing post that discusses this issue further: Java runtime ClassNotFoundException

Upvotes: 1

Related Questions