2015-12-07 19 views
17

Tôi đang theo dõi điều này tutorial to create swipe tabs. Nhưng tôi nhận được lỗi ở trên.Lỗi: java.lang.NoClassDefFoundError Android

phụ thuộc gradle My 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' 
} 

Dưới đây là tác phẩm của tôi. 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) { 

     } 
    }); 
} 

} 

PageAdapter.java tập tin của tôi là

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; 
} 
} 

Và đây là những gì LogCat được đem lại cho tôi

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 

Làm thế nào để giải quyết lỗi này?

+0

phần phụ thuộc gradle của bạn trông như thế nào? –

+0

@ inner_class7 câu hỏi được cập nhật – sap

+0

@sap là bạn đã giải quyết được sự cố chưa? – andreich

Trả lời

19

này đi lên khi một lớp tồn tại thời gian biên dịch nhưng không phải ở thời gian chạy, nhấp chuột phải vào app đi đến open module settings chọn dependencies nhấp chuột trên + và chọn 'phụ thuộc thư viện' chọn design và nhấp ok, chờ gradle để chạy , chạy lại ứng dụng của bạn, chắc chắn rằng nó sẽ sửa chữa nó.

bạn gradle cấp cao nhất sẽ cần phải nhìn như thế này

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

Điều này làm việc cho tôi – VVB

+0

Tôi vẫn gặp sự cố –

+0

Tôi gặp vấn đề tương tự, hóa ra tôi đã sử dụng các phiên bản khác nhau của appcompat trong các mô-đun của mình. Hãy chắc chắn rằng bạn sử dụng cùng một phiên bản của mỗi thư viện và nó có thể chống lại vấn đề của bạn. – Slickelito

24

Các phiên bản của thư viện hỗ trợ và thư viện thiết kế nên được như vậy.

tôi đã thay đổi tôi

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

để

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

và vấn đề cố định cho tôi.

Note: compileSdkVersion và buildToolVersion của tôi là dưới compileSdkVersion 23 buildToolsVersion "23.0.1"

+0

nó làm việc cho tôi. cảm ơn @Hammad –

+0

đã làm việc cho tôi. Cảm ơn! –

+2

Tôi có thể xác nhận rằng có vấn đề với appcompat-v7: 23.1.1 dẫn đến ngoại lệ thời gian chạy 'NoClassDefFoundError Độ phân giải không thành công của TintManager'. Tôi đã cập nhật thành '23.3.0' và ngoại lệ đã được sửa –

3

Bạn phải có để nhập khẩu cùng appcompat và thiết kế các thư viện và cũng 12.2.0 phiên bản.

Tôi khắc phục sự cố bằng cách nhập các thư viện này.

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

Bạn chỉ cần thêm này: biên dịch 'com.android.support:design:22.2.0' hoặc phiên bản cao: biên dịch 'com.android.support:design:25.0.0' là đẹp .

hỗ trợ: thiết kế có chứa hỗ trợ: appcompat.

Các vấn đề liên quan