2014-11-02 14 views
14

我想使用的代碼,推出新的活動:未按規定開展活動,由於ClassNotFoundException的

Intent i = new Intent(this, TempLobbyActivity.class); 
startActivity(i); 
finish(); 

當我啓動這個代碼執行的意圖構造時,我得到以下例外。

FATAL EXCEPTION: main 
Process: com.edr.iveflownthat, PID: 1457 
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/edr/iveflownthat/TempLobbyActivity; 
    at com.edr.iveflownthat.pages.MainActivity.tryAutoLogin(MainActivity.java:46) 
    at com.edr.iveflownthat.pages.MainActivity.onCreate(MainActivity.java:22) 
    at android.app.Activity.performCreate(Activity.java:5933) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
    at android.app.ActivityThread.access$800(ActivityThread.java:144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    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  "com.edr.iveflownthat.TempLobbyActivity" on path: DexPathList[[zip file "/data/app/com.edr.iveflownthat-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
FATAL EXCEPTION: main 
Process: com.edr.iveflownthat, PID: 1457 
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/edr/iveflownthat/TempLobbyActivity; 
    at com.edr.iveflownthat.pages.MainActivity.tryAutoLogin(MainActivity.java:46) 
    at com.edr.iveflownthat.pages.MainActivity.onCreate(MainActivity.java:22) 
    at android.app.Activity.performCreate(Activity.java:5933) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
    at android.app.ActivityThread.access$800(ActivityThread.java:144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    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 "com.edr.iveflownthat.TempLobbyActivity" on path: DexPathList[[zip file "/data/app/com.edr.iveflownthat-1/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) 
    ... 15 more 
Suppressed: java.lang.NoClassDefFoundError: com.edr.iveflownthat.TempLobbyActivity 
    at dalvik.system.DexFile.defineClassNative(Native Method) 
    at dalvik.system.DexFile.defineClass(DexFile.java:222) 
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215) 
    at dalvik.system.DexPathList.findClass(DexPathList.java:321) 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54) 
    ... 17 more 
Suppressed: java.lang.ClassNotFoundException: com.edr.iveflownthat.TempLobbyActivity 
    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 at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
    ... 15 more 
Suppressed: java.lang.NoClassDefFoundError: com.edr.iveflownthat.TempLobbyActivity 
    at dalvik.system.DexFile.defineClassNative(Native Method) 
    at dalvik.system.DexFile.defineClass(DexFile.java:222) 
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215) 
    at dalvik.system.DexPathList.findClass(DexPathList.java:321) 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54) 
    ... 17 more 
Suppressed: java.lang.ClassNotFoundException: com.edr.iveflownthat.TempLobbyActivity 
    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 

我已經確定類TempLobbyActivity確實存在並且是一個適當的活動。我沒有得到其他錯誤。

這裏是TempLobbyActivity的開頭:

package com.edr.iveflownthat; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import com.edr.iveflownthat.pages.fragments.LobbyLeaderboardFragment; 
import com.edr.iveflownthat.pages.fragments.LobbyMessagerFragment; 
import com.edr.iveflownthat.pages.fragments.LobbyMyPlanesFragment; 

public class TempLobbyActivity extends FragmentActivity { 

這裏是我的清單文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.edr.iveflownthat" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="19" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/app_logo" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity 
      android:name=".pages.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".StartActivity" 
      android:label="@string/title_activity_start" > 
     </activity> 
     <activity 
      android:name=".pages.AccountLoginActivity" 
     android:label="@string/title_activity_login" > 
     </activity> 
     <activity 
      android:name=".pages.MyPlanesActivity" 
      android:label="@string/title_activity_my_planes" > 
     </activity> 
     <activity 
      android:name="com.edr.icom.edr.iveflownthat.activities.AccountNewActivity" 
      android:label="@string/title_activity_new_account" > 
     </activity> 
     <activity 
      android:name=".pages.SearchPlanesActivity" 
      android:label="@string/title_activity_search" 
      android:parentActivityName=".pages.LobbyActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.edr.iveflownthat.pages.LobbyActivity" /> 
     </activity> 
     <activity 
      android:name=".pages.LeaderBoardActivity" 
      android:label="@string/title_activity_leader_board" > 
     </activity> 
     <activity 
      android:name=".pages.PlaneBioActivity" 
      android:label="@string/title_activity_plane_info" > 
     </activity> 
     <activity 
      android:name=".pages.AccountLoginFacebookActivity" 
      android:label="@string/title_activity_account_login_facebook" > 
     </activity> 
     <activity 
      android:name=".pages.AccountLoginGoogleActivity" 
      android:label="@string/title_activity_account_login_google" > 
     </activity> 
     <activity 
      android:name=".pages.AccountLoginTwitterActivity" 
      android:label="@string/title_activity_account_login_twitter" > 
     </activity> 
     <activity 
      android:name=".pages.SettingsActivity" 
      android:label="@string/title_activity_settings" > 
     </activity> 
     <activity 
      android:name=".pages.MainTabActivity" 
      android:label="@string/title_activity_main_tab" > 
     </activity> 
     <activity 
      android:name=".pages.LobbyActivity" 
      android:label="@string/title_activity_lobby" > 
     </activity> 
     <activity 
      android:name=".pages.MessageStreamActivity" 
      android:label="@string/title_activity_message_stream" 
      android:parentActivityName=".pages.LobbyActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.edr.iveflownthat.pages.LobbyActivity" /> 
     </activity> 
     <activity 
      android:name=".pages.LeaderboardActivity" 
      android:label="@string/title_activity_leaderboard" 
      android:parentActivityName=".pages.LobbyActivity" > 
     <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.edr.iveflownthat.pages.LobbyActivity" /> 
     </activity> 

     <service 
      android:name=".services.MainService" 
      android:exported="false" /> 

     <activity 
      android:name=".pages.NewMessageActivity" 
      android:label="@string/title_activity_new_message" > 
     </activity> 
     <activity 
      android:name=".pages.PlaneActivity" 
      android:label="@string/title_activity_plane" > 
     </activity> 
     <!-- 
     <meta-data 
      android:name="com.facebook.sdk.ApplicationId" 
      android:value="@string/app_id" /> 

     <activity 
      android:name="com.facebook.LoginActivity" 
      android:label="@string/app_name" > 
     </activity> 
     --> 
     <activity 
      android:name=".TempLobbyActivity" 
      android:label="@string/title_activity_temp_lobby" > 
     </activity> 
    </application> 

</manifest> 
+0

你的'TempLobbyActivity'在哪裏?把你的清單文件。 – Rustam 2014-11-02 17:30:14

+0

運行項目 - >清潔,看看這是否能解決問題。或者重新啓動eclipse。 – Jickson 2014-11-02 17:37:37

+0

在你的問題中包含TempLobbyActivity的開始 - 特別是包聲明和類聲明,顯示你擴展和實現的內容。同時在觀看logcat時卸載並重新安裝與缺失依賴關係有關的消息。 – 2014-11-02 19:10:11

回答

13

即使在AndroidManifest.xml中定義了類,我也遇到了同樣的錯誤。

原因:有時會發生這種情況,因爲您添加了多個版本的appcompat庫。

解決方案:刪除以前版本的appcompat lib並將appcompat_v7.jar添加到您的/ lib文件夾。

清理您的項目並重新構建。你可能不會再犯錯。

0

在AndroidManifest.xml中註冊TempLobbyActivity

<activity android:name="TempLobbyActivity"></activity> 

所以您的清單文件應該是這樣的

<activity android:name=".MainActivity" 
       android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/>   
     </intent-filter> 
    </activity> 
<activity android:name="TempLobbyActivity"></activity> 
+1

我懷疑這不是問題。但是你發佈的內容不會很有用 - 你必須指定包名或帶「。」。至於MainActivity。 – 2014-11-02 19:08:27

+0

@Reinaldo - 編輯你的答案每克里斯·斯特拉頓的建議,我會upvote你的答案:) – 2014-11-02 19:28:17

0

對於誰可能仍然面臨這個問題的:

添加適當的依賴關係,你的build.gradle,當依賴性沒有正確添加和gradle這個不能編譯庫添加到項目中發生這樣的錯誤,所以,您不會在運行時訪問這些庫類。

0

我發現我不得不在控制檯中的錯誤,我忽略了:

[ExoPlayerLib]找不到ExoPlayerLib.apk。

解決這與SO answer,NoClassDefFoundError的次要錯誤也解決了。

看起來,任何與構建和包括項目庫中的問題都可能導致此問題。

相關問題