运行 googlecast 示例时的 Android ClassNotFoundException

Posted

技术标签:

【中文标题】运行 googlecast 示例时的 Android ClassNotFoundException【英文标题】:Android ClassNotFoundException when I run googlecast sample 【发布时间】:2013-10-25 01:55:02 【问题描述】:
10-24 22:37:47.926: E/Trace(31760): error opening trace file: No such file or directory (2)
10-24 21:50:17.726: E/androidRuntime(25669): FATAL EXCEPTION: main
10-24 21:50:17.726: E/AndroidRuntime(25669): java.lang.RuntimeException: Unable to       instantiate activity     ComponentInfocom.example.castsample/com.example.castsample.CastSampleActivity: java.lang.ClassNotFoundException: com.example.castsample.CastSampleActivity
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.os.Looper.loop(Looper.java:137)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.app.ActivityThread.main(ActivityThread.java:4745)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at java.lang.reflect.Method.invokeNative(Native Method)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at java.lang.reflect.Method.invoke(Method.java:511)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at dalvik.system.NativeStart.main(Native Method)
10-24 21:50:17.726: E/AndroidRuntime(25669): Caused by: java.lang.ClassNotFoundException: com.example.castsample.CastSampleActivity
10-24 21:50:17.726: E/AndroidRuntime(25669):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
10-24 21:50:17.726: E/AndroidRuntime(25669):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
10-24 21:50:17.726: E/AndroidRuntime(25669):    ... 11 more    </code>

这是我在运行 google-cast sample 时遇到的错误。 而且我不会修改 Manifest 中的任何内容。 任何帮助将不胜感激。

【问题讨论】:

您使用的是 ProGuard 还是任何混淆器? 您使用的是哪个 IDE? 我没有使用 ProGuard 和任何混淆器。 我正在使用eclipse进行开发。 检查这个:***.com/questions/16744963/… 和 ***.com/questions/16596969/… 【参考方案1】:

放v7-appcompat.jar,v7-mediarouter.jar 并不能解决问题。它会在运行时出错。 您必须将上述项目 2 作为库项目导入。 Appcompat 是 Mediarouter 项目的依赖项目。然后添加上面的2个项目作为你项目的依赖项目。

【讨论】:

您将 android-sdk/extra/android 目录下的 appcompat 和 mediarouter 项目作为库项目导入。然后在项目的“属性”中选择“Java 构建路径”。添加上面的2个lib项目作为你的依赖项目。【参考方案2】:

将您的库/jar 放入 libs 文件夹。如果仍然命名为 lib,则将其重命名为 libs。

【讨论】:

我已将 sup-v4.sup-v7-appcompat,sup-v7-mediarouter 添加到库中。这可能不是问题。还是谢谢大家。【参考方案3】:

在 Android 项目中尝试以下步骤:

在“项目资源管理器”中的项目上单击鼠标右键,然后 选择“属性” 在左侧列表中选择“Java Build Path”。 点击“订购和导出”选项卡。 分别选中“Android Private Libraries”和“Android Dependencies”两个复选框,然后单击“确定”按钮。 清理项目并运行。

如果没有任何效果,您可能想尝试this page 的一些解决方案。这是投票最多的答案:https://***.com/a/11776806/827110

【讨论】:

我已经更新了我的答案。似乎这个问题相当普遍,大多数人不知道如何解决它。 我认为这不是ClassNotFoundException问题的根本原因。这可能是设备版本与项目版本不同造成的。

以上是关于运行 googlecast 示例时的 Android ClassNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

让 GoogleCast 工作

在 XCode 上运行时出错“未定义不是对象(正在评估 'GoogleCast.DEVICE_AVAILABLE')”

将 GoogleCast SDK 与 Cocoapods 集成

设置 Google Cast 示例“CastHelloText-Android”时出错

Expression.Lambda 和运行时的查询生成,最简单的“Where”示例

java.lang.NoClassDefFoundError:运行 SimpleHelloByEnteringName JSF 示例时的 javax/el/ELResolver