gpt4 book ai didi

aviarc - 添加 aviarc 小部件命名空间时出现 RegistryItemLoader.LoaderException

转载 作者:行者123 更新时间:2023-12-02 00:17:43 24 4
gpt4 key购买 nike

我一直在开发一个新的应用程序,它有自己的新小部件,但是当我从以前的应用程序中提取一个小部件命名空间(条件)时,编译器开始给我一个错误:

RegistryItemLoader.doPreLoadChecks(RegistryItemLoader.java:154): RegistryItemLoader.LoaderException: ResourceDirectory does not contain a definition.xml file

在旧应用程序中,小部件运行良好。

在新应用程序中,widgets 目录的目录结构如下所示:

widgets/add-dependency/widget files

widgets/au.com.aviarc.widget.condition/1.0.0/widgets/is-enabled/widget files

最佳答案

遗留工件没有命名空间,并且采用以下样式:

widgets
- grid
- - definition.xml
- text-dynamic
- - definition.xml

可命名空间的工件出现在 Aviarc 3 中,它们的样式如下:

widgets
- example.namespace
- - 1.0.0
- - - widgets
- - - - grid
- - - - - definition.xml
- - - - text-dynamic
- - - - - definition.xml

Aviarc 3 仍然支持遗留工件,但它采用全有或全无的方式。如果 Aviarc 3 在工件目录中检测到任何遗留工件(通过查看任何直接子目录中是否有任何 definition.xml 文件来完成),它会尝试在遗留模式下获取整个工件目录。

在您提供的目录结构中,添加依赖项小部件是遗留小部件,因此 Aviarc 尝试将所有小部件作为遗留小部件。错误是因为它试图读取 au.com.aviarc.widget.condition 目录中的 definition.xml 文件,但没有,因为它不是遗留小部件。

问题的解决方案是:

  • 将所有遗留工件移至命名空间
  • 将所有命名空间工件更改为遗留工件

前一种解决方案是推荐的解决方案。如果您在命名空间中有多个版本的特定工件,则后者可能是不可能的,并且通常需要对应用程序进行更多更改。

对于前者,开始时最好将遗留工件移至应用程序 1.0.0 命名空间,因为这是引擎隐式授予它们的命名空间,因此围绕它们的任何特定于命名空间的东西都已经是指着它。应用程序 1.0.0 命名空间还保留了遗留工件的行为,因为其中的工件将自动覆盖内置工件,除非明确指定内置版本。

所以您正在考虑将目录结构更改为:

widgets
- application
- - 1.0.0
- - - widgets
- - - - add-dependency
- - - - - ...
- au.com.aviarc.widget.condition
- - [no changes]

如果路径感觉有点长,可以将一些遗留工件子目录移出各个小部件,并设置在命名空间的小部件目录旁边。一些例子是 src 和 lib 目录——我个人不确定完整的列表是什么,如果它们有限制的话(当然,有些工件总是有可能期望在它们下面找到目录,在这种情况下它们不应移动)。

关于aviarc - 添加 aviarc 小部件命名空间时出现 RegistryItemLoader.LoaderException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com