2015-12-07 13 views
17

Ich folge diesem tutorial to create swipe tabs. Aber ich bekomme den obigen Fehler.Fehler: java.lang.NoClassDefFoundError Android

Meine gradle Abhängigkeiten sturucture

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.1.1' 
compile 'com.android.support:design:22.2.0' 
} 

Hier meine Dateien sind. MainActivity.java

import android.support.design.widget.TabLayout; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); //this line gives error 
    tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); //this line gives error 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager()); 
    viewPager.setAdapter(pageAdapter); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
} 

} 

Und meine PageAdapter.java Datei ist

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 

public class PageAdapter extends FragmentStatePagerAdapter { 

    public PageAdapter(FragmentManager fm) { 
    super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      return new InstaPicSwipeTab(); 
     case 1: 
      return new SongsDownloadSwipeTab(); 
    } 
    return null; 
} 

@Override 
public int getCount() { 
    return 2; 
} 
} 

Und das ist, was LogCat mir gibt

12-08 00:27:24.452 11770-11770/com.example.suraj.freewee E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.suraj.freewee, PID: 11770 
                      java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/internal/widget/TintManager; 
                       at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1041) 
                       at android.support.design.widget.TabLayout.createTabView(TabLayout.java:582) 
                       at android.support.design.widget.TabLayout.addTabView(TabLayout.java:616) 
                       at android.support.design.widget.TabLayout.addTab(TabLayout.java:334) 
                       at android.support.design.widget.TabLayout.addTab(TabLayout.java:309) 
                       at com.example.suraj.freewee.MainActivity.onCreate(MainActivity.java:23) 
                       at android.app.Activity.performCreate(Activity.java:6237) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                       at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:148) 
                       at android.app.ActivityThread.main(ActivityThread.java:5417) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                      Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.internal.widget.TintManager" on path: DexPathList[[zip file "/data/app/com.example.suraj.freewee-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.suraj.freewee-1/lib/x86, /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 android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1041)  
                       at android.support.design.widget.TabLayout.createTabView(TabLayout.java:582)  
                       at android.support.design.widget.TabLayout.addTabView(TabLayout.java:616)  
                       at android.support.design.widget.TabLayout.addTab(TabLayout.java:334)  
                       at android.support.design.widget.TabLayout.addTab(TabLayout.java:309)  
                       at com.example.suraj.freewee.MainActivity.onCreate(MainActivity.java:23)  
                       at android.app.Activity.performCreate(Activity.java:6237)  
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)  
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
                       at android.app.ActivityThread.-wrap11(ActivityThread.java)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
                       at android.os.Looper.loop(Looper.java:148)  
                       at android.app.ActivityThread.main(ActivityThread.java:5417)  
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
                      Suppressed: java.lang.ClassNotFoundException: android.support.v7.internal.widget.TintManager 
                       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) 
                        ... 19 more 
                      Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 

Wie um diesen Fehler zu lösen?

+0

Wie sieht Ihr Google Dependency-Bereich aus? –

+0

@ inner_class7 Frage aktualisiert – sap

+0

@SAP sind Sie Problem gelöst? – andreich

Antwort

19

dies kommt, wenn eine Klasse zum Zeitpunkt der Kompilierung existiert, aber nicht zur Laufzeit, klicken Sie rechts auf dem app-open module settings gehen wählen dependencies Klick auf die + und wählen Sie ‚Bibliothek Abhängigkeit‘ wählen design und ok klicken, für gradle warten zu laufen , führe deine App erneut aus, bin mir sicher, dass das Problem behoben wird.

Ihr Top-Level-gradle muß, wie diese Bibliothek

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion '23.0.2' 

defaultConfig { 
    applicationId "aubry.chromio.com.dressup" 
    minSdkVersion 15 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 

} 


dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile fileTree(dir: 'libs', include: ['*.java']) 
    compile fileTree(dir: 'libs', include: ['*.so']) 


    compile 'com.android.support:appcompat-v7:23.1.0' 
    compile 'com.android.support:design:23.1.0' 

} 
+1

Das funktionierte für mich – VVB

+0

Noch habe ich ein Problem –

+0

Ich hatte das gleiche Problem, stellte sich heraus, dass ich verschiedene Versionen von appcompat in meinen Modulen verwendet. Stellen Sie sicher, dass Sie die gleiche Version jeder Bibliothek verwenden, um Probleme zu vermeiden. – Slickelito

24

Die Version der Support-Bibliothek und Design aussehen soll gleich sein.

Ich änderte meine

compile 'com.android.support:appcompat-v7:23.1.1' 

zu

compile 'com.android.support:appcompat-v7:23.0.1' 

und Thema für mich festgelegt.

Hinweis: mein compileSdkVersion und buildToolVersion unter compileSdkVersion 23 buildToolsVersion "23.0.1"

+0

es funktionierte für mich. Danke @Hammad –

+0

arbeitete für mich. Vielen Dank! –

+2

Ich kann bestätigen, dass es ein Problem mit appcompat-v7: 23.1.1 gibt, was zu der Laufzeitausnahme "NoClassDefFoundError Failed resolution of TintManager" führt. Ich habe auf "23.3.0" aktualisiert und die Ausnahme wurde behoben –

3

Sie haben müssen gleiche appcompat und Design-Bibliotheken und auch 12.2.0 Version zu importieren.

Ich repariere es durch den Import dieser Bibliotheken.

compile 'com.android.support:appcompat-v7:25.2.0' 
compile 'com.android.support:design:25.2.0' 
compile 'com.android.support:recyclerview-v7:25.2.0' 
compile 'com.android.support:support-v4:25.2.0' 
compile 'com.android.support:cardview-v7:25.2.0' 
0

du nur noch hinzufügen: Kompilierung 'com.android.support:design:22.2.0' oder hohe Version: Kompilierung 'com.android.support:design:25.0.0' ist schön .

Unterstützung: Design hat Unterstützung enthalten: appcompat.

Verwandte Themen