java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/maps/GeoPoint

Posted

技术标签:

【中文标题】java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/maps/GeoPoint【英文标题】:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/maps/GeoPoint 【发布时间】:2018-01-28 13:06:19 【问题描述】:

我正在尝试通过这种方法从地址获取纬度和经度:-

public GeoPoint getLocationFromAddress(String strAddress)

    Geocoder coder = new Geocoder(this);
    List<Address> address;
    GeoPoint p1 = null;

    try 
        address = coder.getFromLocationName(strAddress,5);
        if (address==null) 
            return null;
        
        Address location=address.get(0);
        location.getLatitude();
        location.getLongitude();

        p1 = new GeoPoint((int) (location.getLatitude() * 1E6),
                (int) (location.getLongitude() * 1E6));

        return p1;
     catch (IOException e) 
        e.printStackTrace();
    
    return null;

但我得到了这个错误:-

java.lang.NoClassDefFoundError: 解析失败:Lcom/google/android/maps/GeoPoint

我在这里错过了什么?

我的完整错误:-

进程:breamex.happy_week_end,PID:22803 java.lang.NoClassDefFoundError:解析失败: Lcom/google/android/maps/GeoPoint; 在 breamex.happy_week_end.search.SearchActivity.getLocationFromAddress(SearchActivity.java:439) 在 breamex.happy_week_end.search.SearchActivity.search(SearchActivity.java:357) 在 breamex.happy_week_end.search.SearchActivity.access$000(SearchActivity.java:76) 在 breamex.happy_week_end.search.SearchActivity$1.onClick(SearchActivity.java:189) 在 android.view.View.performClick(View.java:5610) 在 android.view.View$PerformClick.run(View.java:22265) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6077) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 引起:java.lang.ClassNotFoundException:找不到类 路径上的“com.google.android.maps.GeoPoint”:DexPathList[[zip 文件 "/数据/应用

我的完整Gradle:-

 apply plugin: 'com.android.application'

android 
    compileSdkVersion 'Google Inc.:Google APIs:24'
    buildToolsVersion '25.0.3'
    defaultConfig 
        applicationId "app"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    


dependencies 
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
        exclude group: 'com.android.support', module: 'support-annotations'
    )
    compile project(':stepper')
    compile project(':slider')
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support:design:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-messaging:10.2.0'
    compile 'org.greenrobot:eventbus:3.0.0'
    compile 'com.facebook.android:facebook-android-sdk:4.22.0'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.android.gms:play-services:10.2.0'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services-auth:10.2.0'
    compile 'com.google.firebase:firebase-auth:10.2.0'
    compile 'com.android.support:support-v4:26.+'
    compile 'com.github.bumptech.glide:glide:4.0.0-RC1'
    compile 'de.hdodenhof:circleimageview:2.1.0'
    compile 'com.jakewharton:butterknife:8.6.0'
    testCompile 'junit:junit:4.12'

apply plugin: 'com.google.gms.google-services'

【问题讨论】:

发布完整的错误日志和 gradle 文件 @BhuvaneshBs gradle 将为您做什么,顺便说一句我没有使用它?,这是主要错误,没有更多有用的东西? 你不能定义这是一个确切的错误。这个错误可能是由其他原因引起的。因此,请发布您的完整错误日志。 我们要求您的 gradle 文件检查您的库。 @BhuvaneshBs 更新 【参考方案1】:

您必须在您的应用程序中包含 multiDex。 在您的错误日志中查看以下错误。

ClassNotFoundException: Didn't find class "com.google.android.maps.GeoPoint" on path: DexPathList[[zip file "/data/app

将此添加到您的依赖项中。

compile 'com.android.support:multidex:1.0.1'

在你的 Gradle 中添加 multiDexEnabled true

android 
    defaultConfig 
        ...
        minSdkVersion 21 
        targetSdkVersion 26
        multiDexEnabled true    // add this line
    
    ...

在您的清单中添加 multiDex 应用程序类。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>

然后清理并重建您的项目。

希望它有所帮助:)

【讨论】:

以上是关于java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/maps/GeoPoint的主要内容,如果未能解决你的问题,请参考以下文章