使用Eclipse在android中获取java.lang.NoClassDefFoundError
当我单击应用程序上的按钮时,我将获得以下Logcat信息:使用Eclipse在android中获取java.lang.NoClassDefFoundError,java,android,eclipse,facebook,sdk,Java,Android,Eclipse,Facebook,Sdk,当我单击应用程序上的按钮时,我将获得以下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/AndroidRunti
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()类?谢谢 此异常通常意味着您的vm无法找到必要的库。但在运行时发生这种情况似乎很奇怪。
试着检查你的库是否都在那里。我试图开始使用Facebook的Android SDK和Eclipse,但无法让它工作。在尝试了不同的方法后,这里的解决方案始终有效: 1) 仅导入(文件->导入->现有Android代码到工作区)Facebook SDK文件夹(路径\Facebook-Android-SDK-3.0.1)。(不要检查工作场所的副本) 2) 导入(即PATH\facebook-android-sdk-3.0.1\samples\ProfilePictureSample)只是其中一个示例项目(目前)。我将以ProfilePictureSample为例 如您所见,Eclipse抛出错误,表示它不知道ProfilePictureSampleActivity中的FragmentActivity是什么。FragmentActivity是android支持库的一部分。如果你看一下PackageExplorer,它没有libs文件夹,也没有对android support lirbary的任何引用;它在FacebookSDK图书馆上。我们需要告诉Eclipse将其导出 4) 右键单击FacebookSDK库,然后单击属性。在左侧菜单上,转到Java构建路径。然后在Order and Export选项卡下检查Android私有库(您也可以单击Android-supportv4-jar) 5) 项目->清洁 现在出于某种原因(也许有人可以详细说明),示例项目还需要导出android支持库 6) 右键单击示例项目(即ProfilePictureSample),然后单击属性。在左侧菜单上,转到Java构建路径。然后在Order和Export选项卡下检查Android私有库 7) 项目->清洁 希望这有帮助