我一直在使用它自己的新小部件开发一个新应用程序,但是当我从上一个应用程序中提取一个小部件名称空间(条件)时,编译器开始给我一个错误:
RegistryItemLoader.doPreLoadChecks(RegistryItemLoader.java:154):RegistryItemLoader.LoaderException: ResourceDirectory不包含definition.xml文件
在旧应用程序中,小部件工作得很好。
在新应用程序中,小部件目录的目录结构如下所示:
小部件/添加-依赖性/小部件文件 widgets/au.com.aviarc.widget.condition/1.0.0/widgets/is-enabled/widget文件
发布于 2012-09-13 00:31:41
遗留构件没有名称空间,并且采用了这种风格:
widgets
- grid
- - definition.xml
- text-dynamic
- - definition.xml可命名的文物是在Aviarc 3中出现的,它们的风格如下:
widgets
- example.namespace
- - 1.0.0
- - - widgets
- - - - grid
- - - - - definition.xml
- - - - text-dynamic
- - - - - definition.xmlAviarc3仍然支持遗留的工件,但它是以一种全或无的方式。如果Aviarc3检测到工件目录中的任何遗留工件,就像查看任何直接子目录中是否有definition.xml文件所做的那样,它将尝试以遗留模式获取整个工件目录。
在您提供的目录结构中,添加依赖小部件是一个遗留小部件,因此Aviarc尝试将所有小部件作为遗留小部件。导致此错误的原因是它试图读取目录au.com.aviarc.widget.condition中的au.com.aviarc.widget.condition文件,而没有错误,因为它不是旧的小部件。
解决这一问题的办法是:
前者是推荐的解决方案。如果您在名称空间中有多个特定工件的版本,并且通常需要对应用程序进行更多的更改,则后者可能是不可能的。
对于前者,最好将遗留构件移到应用程序1.0.0命名空间中,因为这是引擎隐式授予的名称空间,因此围绕它们的任何特定名称空间都将指向它。应用程序1.0.0命名空间还保留了遗留构件的行为,因为其中的构件将自动覆盖内置构件,除非显式指定内置版本。
因此,您希望将目录结构更改为:
widgets
- application
- - 1.0.0
- - - widgets
- - - - add-dependency
- - - - - ...
- au.com.aviarc.widget.condition
- - [no changes]如果路径感觉有点长,可以将一些遗留工件子目录移出各个小部件,并与名称空间的小部件目录一起设置。有些例子是src和lib目录--我个人不确定完整的列表是什么,如果它们甚至有限制的话(当然,有些工件可能会希望找到它们下面的目录,当然,在这种情况下,它们不应该被移动)。
https://stackoverflow.com/questions/12379922
复制相似问题