java - 使用 Eclipse 在 android 中获取 java.lang.NoClassDefFoundError

标签 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/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

以下是我如何设置类(class),此处仅显示相关方法和信息:

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) 仅导入(文件->导入->现有 Android 代码到工作区)Facebook SDK 文件夹 (PATH\facebook-android-sdk-3.0.1)。 (不要检查副本到工作场所)

2) 仅导入(即 PATH\facebook-android-sdk-3.0.1\samples\ProfilePictureSample)示例项目之一(目前)。我将使用 ProfilePictureSample 作为示例

如您所见,Eclipse 抛出错误,表示它不知道 ProfilePictureSampleActivity 中的 FragmentActivity。 FragmentActivity 是 android 支持库的一部分。如果您查看包资源管理器,会发现没有 libs 文件夹或任何对 android 支持库的引用;它位于 FacebookSDK 库中。我们需要告诉 Eclipse 导出它。

4) 右键单击​​ FacebookSDK 库,然后单击属性。在左侧菜单中,转到 Java 构建路径。然后在“Order and Export”选项卡下检查“Android Private Libraries”(您也可以单击“android-supportv4-jar”)。

5) 项目->清理

现在由于某种原因(也许有人可以详细说明这一点),示例项目还需要导出 android 支持库。

6) 右键单击​​示例项目(即 ProfilePictureSample),然后单击属性。在左侧菜单中,转到 Java 构建路径。然后在“Order and Export”选项卡下选中“Android Private Libraries”。

7) 项目->清理

希望这有帮助!!

关于java - 使用 Eclipse 在 android 中获取 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17196832/

相关文章:

java - org.apache.http.conn.HttpHostConnectException : Connection to http://localhost refused

android - 如何从MySQL数据库中获取数据并在ListView中列出

android - onRequestPermissionsResult 未在 Android Activity 中回调

java - Eclipse中加入JProgressBar和JTextArea(批量运行控制台)

c++ - 在 Mac 上运行 CDT Eclipse 时出错

java - 创建了 Simpl JAR 文件,导入到 Maven 项目,但 Maven 安装提示 "package does not exist"

java - 将 Json 反序列化为包含通用对数组的 Java 实体

java - Eclipse 插件非常慢,但是哪一个?一种衡量插件性能的方法?

Java JDBC数据库连接登录

java - 如何在 Spring AOP 上获取 Web session