【问题标题】:Xamarin Forms error: Java.Lang.NoClassDefFoundError: android.support.graphics.drawable.VectorDrawableCompatXamarin 表单错误:Java.Lang.NoClassDefFoundError:android.support.graphics.drawable.VectorDrawableCompat
【发布时间】:2017-03-08 23:42:36
【问题描述】:

在 Android 模拟器上开始调试我的项目时,我收到此错误:

Java.Lang.NoClassDefFoundError: android.support.graphics.drawable.VectorDrawableCompat

在此代码处:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        //SQLitePCL.Batteries.Init();
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);

        string dbPath = FileAccessHelper.GetLocalFilePath("clocker.db3");

        global::Xamarin.Forms.Forms.Init(this, bundle);
        LoadApplication(new Clocker.App(dbPath));
    }
}

此行出现错误:

base.OnCreate(bundle);

我曾尝试在线查看其他建议,但答案似乎与我的项目中不存在的特定 Xamarin studio 文件(例如 gradle 文件)有关。

我检查了“bundle”的内容,出现错误时它似乎为空,但我不确定这是否导致错误。

我正在使用 Xamarin 表单 PCL。

【问题讨论】:

  • 你能把你的源代码放在某个地方,以便我们尝试重现修复吗?

标签: c# visual-studio xamarin.android xamarin.forms


【解决方案1】:

如果项目路径过长,多个类可能会出现此错误,因为它超出了操作系统字符长度的限制。

长路径示例:

C:\Users\用户名\Documents\Visual Studio xxxx\Projects\项目名称

好路径示例:

C:\Projects\项目名称

编辑 - 添加了包的外观:

【讨论】:

  • 我的路径已经这样设置了。也没有“路径太长”错误。
  • 尝试通过 nuget 更新或重新安装 Xamarin.Forms 包。并且不要从 Xamarin.Droid 手动更新一个包。 Xamarin.Forms 应该处理它的版本。
  • 我很确定我已经这样做了几次,但会再试一次。我应该在解决方案还是项目级别进行更新?
  • @connersz 项目级别。确保不要从 Prefix Xamarin.Android.Support 手动更新任何包。您将更新 Xamarin.Forms,而所有其他人将等待更新。确保不要更新。
  • 为方便起见,只需卸载所有 Android.Support 和 Xamarin.Forms,然后尝试再次安装而不更新 Xamarin.Android..xxx
【解决方案2】:

错误Java.Lang.NoClassDefFoundError: 表示您缺少课程。它还会告诉您缺少哪个课程:android.support.graphics.drawable.VectorDrawableCompat。我自己没有使用过 Xamarin,但他们的文档描述了如何在 C# 代码中使用 use Java classes。导入包含 android.support.graphics.drawable.VectorDrawableCompat 类(我认为是在 android.support.graphics.drawable 中的 VectorDrawableCompat.java?)的包后,您的代码应该运行。

【讨论】:

  • 我已经添加了所有作为可能解决方案脱颖而出但没有任何效果的类。有数百个可用的,很难知道要添加什么。
  • 谢天谢地,您不需要浏览数百个课程。您的错误消息告诉您在哪里查看。我已通过指向相应 android 文档的链接更新了我的答案。
【解决方案3】:

我不确定这是否会对您有所帮助,但请查看 MainActivity 的声明方式。

你的例子有:

  • 公共类 MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity

但在我的代码中,我有:

  • 公共类 MainActivity:Xamarin.Forms.Platform.Android.FormsApplicationActivity

看看这是否对启动有影响。 如果您必须使用 FormsAppCompatActivity,请查看将 Api 级别更改为支持的最高级别是否会有所不同。

您是否有任何来自“输出”窗口的日志,显示 Xamarin 诊断。

【讨论】:

    【解决方案4】:

    我遇到了类似的错误。我解决了安装最新版本的JDK 并在 Visual Studio 中选择新文件夹。

    【讨论】:

      猜你喜欢
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2019-01-25
      • 2021-01-28
      • 2014-10-09
      相关资源
      最近更新 更多