首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓较低版本中的NoClassDefFoundError

安卓较低版本中的NoClassDefFoundError
EN

Stack Overflow用户
提问于 2016-05-14 09:59:51
回答 1查看 518关注 0票数 0

在Androidos4.3API 18中运行该应用程序时,我得到了此错误,但如果在os 5.1.0API 22上运行,则工作正常。

代码语言:javascript
复制
    java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:289)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5103) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.TypeNotPresentException: Type com.webakruti.soilreport.model.LoginResponse not present
at org.apache.harmony.luni.lang.reflect.ImplForType.getRawType(ImplForType.java:64)
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:73)
at org.apache.harmony.luni.lang.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:61)
at org.apache.harmony.luni.lang.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:53)
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:72)
at org.apache.harmony.luni.lang.reflect.Types.getType(Types.java:29)
at java.lang.Class.getGenericSuperclass(Class.java:761)
at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:82)
at com.google.gson.reflect.TypeToken.
<init>
(TypeToken.java:62)
at com.webakruti.soilreport.ui.activities.LoginActivity$2.
<init>
(LoginActivity.java:79)
at com.webakruti.soilreport.ui.activities.LoginActivity.login(LoginActivity.java:79)
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5103) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.webakruti.soilreport.model.LoginResponse
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:204)
at org.apache.harmony.luni.lang.reflect.ImplForType.getRawType(ImplForType.java:62)
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:73) 
at org.apache.harmony.luni.lang.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:61) 
at org.apache.harmony.luni.lang.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:53) 
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:72) 
at org.apache.harmony.luni.lang.reflect.Types.getType(Types.java:29) 
at java.lang.Class.getGenericSuperclass(Class.java:761) 
at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:82) 
at com.google.gson.reflect.TypeToken.
<init>
(TypeToken.java:62) 
at com.webakruti.soilreport.ui.activities.LoginActivity$2.
<init>
(LoginActivity.java:79) 
at com.webakruti.soilreport.ui.activities.LoginActivity.login(LoginActivity.java:79) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5103) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NoClassDefFoundError: com/webakruti/soilreport/model/LoginResponse
at java.lang.Class.classForName(Native Method) 
at java.lang.Class.forName(Class.java:204) 
at org.apache.harmony.luni.lang.reflect.ImplForType.getRawType(ImplForType.java:62) 
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:73) 
at org.apache.harmony.luni.lang.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:61) 
at org.apache.harmony.luni.lang.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:53) 
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:72) 
at org.apache.harmony.luni.lang.reflect.Types.getType(Types.java:29) 
at java.lang.Class.getGenericSuperclass(Class.java:761) 
at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:82) 
at com.google.gson.reflect.TypeToken.
<init>
(TypeToken.java:62) 
at com.webakruti.soilreport.ui.activities.LoginActivity$2.
<init>
(LoginActivity.java:79) 
at com.webakruti.soilreport.ui.activities.LoginActivity.login(LoginActivity.java:79) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5103) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.webakruti.soilreport.model.LoginResponse" on path: DexPathList[[zip file "/data/app/com.webakruti.soilreport-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.webakruti.soilreport-2, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at java.lang.Class.classForName(Native Method) 
at java.lang.Class.forName(Class.java:204) 
at org.apache.harmony.luni.lang.reflect.ImplForType.getRawType(ImplForType.java:62) 
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:73) 
at org.apache.harmony.luni.lang.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:61) 
at org.apache.harmony.luni.lang.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:53) 
at org.apache.harmony.luni.lang.reflect.ImplForType.getResolvedType(ImplForType.java:72) 
at org.apache.harmony.luni.lang.reflect.Types.getType(Types.java:29) 
at java.lang.Class.getGenericSuperclass(Class.java:761) 
at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(TypeToken.java:82) 
at com.google.gson.reflect.TypeToken.
<init>
(TypeToken.java:62) 
at com.webakruti.soilreport.ui.activities.LoginActivity$2.
<init>
(LoginActivity.java:79) 
at com.webakruti.soilreport.ui.activities.LoginActivity.login(LoginActivity.java:79) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5103) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method)

java代码

代码语言:javascript
复制
   public void login(View v) {
    email = edtLogin.getText().toString();
    pwd = edtPassword.getText().toString();

    postParam = new HashMap<String, String>();
    postParam.put("username", email);
    postParam.put("password", pwd);
    postParam.put("grant_type", "password");

    JSONObject object = new JSONObject(postParam);
    Type type = new TypeToken<LoginResponse>() {
   }.getType();
    // GeneralRequest.login(LoginActivity.this, type, object, LoginActivity.this, LoginActivity.this);
    callApi(postParam);
}

XML where the method is called:
 <Button
    android:id="@+id/login"
    android:layout_width="@dimen/width_400"
    android:layout_height="wrap_content"
    android:background="@drawable/btn_background"
    android:layout_below="@+id/password"
    android:layout_centerHorizontal="true"
    android:onClick="login"
    android:text="Login"
    android:textStyle="bold"
    android:textAllCaps="false"
    android:layout_marginTop="@dimen/margin_corner"
    android:textColor="@android:color/white"
    />

梯度应用程序文件-

代码语言:javascript
复制
apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "24.0.0 rc2"

defaultConfig {
    applicationId "com.mycompany.soilreport"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'),      'proguard-rules.pro'
    }
}

dexOptions {
    incremental = true;
    preDexLibraries = false
    javaMaxHeapSize "4g" // 2g should be also OK
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.mcxiaoke.volley:library:1.0.19'
compile 'com.google.code.gson:gson:2.4'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:support-v4:23.3.0'
compile 'com.code-troopers.betterpickers:library:2.5.3'
compile files('libs/itextg-5.5.4.jar')
}

到目前为止我尝试过的事情:

  1. 重新启动android工作室
  2. 重新启动geny运动
  3. 重新启动我的笔记本电脑。
  4. 再次克隆了这个项目
  5. 检查java版本和gradle版本
  6. 卸载apk并再次安装
  7. 检查了所有变量的初始化。

有人能解释一下为什么我对这个构建文件有问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-14 13:06:43

代码语言:javascript
复制
public class MainActivity extends Activity { 

public void login(View v) {
email = edtLogin.getText().toString();
pwd = edtPassword.getText().toString();

postParam = new HashMap<String, String>();
postParam.put("username", email);
postParam.put("password", pwd);
postParam.put("grant_type", "password");

JSONObject object = new JSONObject(postParam);
Type type = new TypeToken<LoginResponse>() {
}.getType();
// GeneralRequest.login(LoginActivity.this, type, object,  LoginActivity.this, LoginActivity.this);
callApi(postParam);
}

//activity oncreated method and other override methods

}

在这里,请注意我已经向您展示的一件事,您应该将onclick方法放在您的活动中,但不放在“@重写”方法之外,因为这些方法是活动生成的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37225222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档