[英]Getting java.lang.NoClassDefFoundError in android with Eclipse
單擊應用程序上的按鈕時,我得到以下Logcat信息:
06-19 11:24:45.308: E/AndroidRuntime(11498): FATAL EXCEPTION: main
06-19 11:24:45.308: E/AndroidRuntime(11498): java.lang.IllegalStateException: Could not execute method of the activity
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View$1.onClick(View.java:3674)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View.performClick(View.java:4198)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View$PerformClick.run(View.java:17164)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.os.Handler.handleCallback(Handler.java:615)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.os.Handler.dispatchMessage(Handler.java:92)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.os.Looper.loop(Looper.java:137)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.app.ActivityThread.main(ActivityThread.java:4918)
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invokeNative(Native Method)
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invoke(Method.java:511)
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
06-19 11:24:45.308: E/AndroidRuntime(11498): at dalvik.system.NativeStart.main(Native Method)
06-19 11:24:45.308: E/AndroidRuntime(11498): Caused by: java.lang.reflect.InvocationTargetException
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invokeNative(Native Method)
06-19 11:24:45.308: E/AndroidRuntime(11498): at java.lang.reflect.Method.invoke(Method.java:511)
06-19 11:24:45.308: E/AndroidRuntime(11498): at android.view.View$1.onClick(View.java:3669)
06-19 11:24:45.308: E/AndroidRuntime(11498): ... 11 more
06-19 11:24:45.308: E/AndroidRuntime(11498): Caused by: java.lang.NoClassDefFoundError: com.facebook.android.MainActivity$UpdateStatusListener
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.facebook.android.MainActivity.triggerDialog(MainActivity.java:55)
06-19 11:24:45.308: E/AndroidRuntime(11498): at com.facebook.android.MainActivity.firstClicked(MainActivity.java:36)
06-19 11:24:45.308: E/AndroidRuntime(11498): ... 14 more
這是我設置類的方式,僅在此處顯示相關的方法和信息:
public class MainActivity extends Activity {
//triggered when the button is clicked
public void firstClicked(View view)
{
triggerDialog();
}
public void triggerDialog()
{
//assume for the sake of this post that this string array has 4 strings
String[] offer_details = postOffer.getDetails();
Bundle params = new Bundle();
params.putString("caption", getString(R.string.app_name)); //Hackbook for Android
Utility.mFacebook.dialog(MainActivity.this, "feed", params, new UpdateStatusListener());
}
public class UpdateStatusListener extends BaseDialogListener {
@Override
public void onComplete(Bundle values) {
Log.i("wbbug","Status post complete.");
final String postId = values.getString("post_id");
if (postId != null) {
Toast toast = Toast.makeText(getApplicationContext(), "Facebook status update successful", Toast.LENGTH_LONG);
toast.show();
} else {
Toast toast = Toast.makeText(getApplicationContext(), "No wall post made",
Toast.LENGTH_LONG);
toast.show();
}
}
}
}
這些都是直接遵循Facebook SDK中的示例,並且該示例正在使用此基本代碼。 為什么找不到類UpdateStatusListener()? 謝謝!
我試圖開始在Eclipse中使用Facebook的Android SDK,但無法正常工作。 在嘗試了不同的方法之后,下面是始終有效的解決方案:
1)僅將Facebook SDK文件夾(PATH \\ facebook-android-sdk-3.0.1)導入(文件->導入->現有Android代碼到工作區)。 (請勿將副本檢查到工作場所)
2)僅導入其中一個示例項目(即PATH \\ facebook-android-sdk-3.0.1 \\ samples \\ ProfilePictureSample)。 我將以ProfilePictureSample為例
如您所見,Eclipse拋出錯誤,說它不知道ProfilePictureSampleActivity中的FragmentActivity。 FragmentActivity是android支持庫的一部分。 如果您查看軟件包瀏覽器,則沒有libs文件夾或對android支持庫的任何引用; 它在FacebookSDK庫中。 我們需要告訴Eclipse導出它。
4)右鍵單擊FacebookSDK庫,然后單擊屬性。 在左側菜單上,轉到Java Build Path。 然后在“訂購和導出”選項卡下,檢查“ Android私有庫”(您也可以單擊“ android-supportv4-jar”)。
5)項目->清潔
現在由於某種原因(也許有人可以詳細說明),示例項目也需要導出android支持庫。
6)右鍵單擊示例項目(即ProfilePictureSample),然后單擊屬性。 在左側菜單上,轉到Java Build Path。 然后在“訂購和導出”選項卡下,選中“ Android私有庫”。
7)項目->清潔
希望這會有所幫助!
此異常通常意味着您的vm無法找到必要的庫。 盡管它在運行時發生似乎很奇怪。 嘗試檢查您的庫是否全部存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.