2012-09-12 64 views
3

我一直在工作與它自己的新的widget新的應用程序,但是當我把一個widget命名空間(條件)在從以前的應用程序編譯器開始給我的錯誤:RegistryItemLoader.LoaderException時aviarc插件命名空間

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

在舊的應用程序中,小部件工作正常。

在新的應用程序窗口小部件目錄的目錄結構如下:

widgets/add-dependency/widget files

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

回答

3

遺留的文物沒有命名空間,並且是在樣式:

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

Namespaceable文物來到在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名稱空間還保留了遺留工件的行爲,因爲它中的工件將自動覆蓋內置工件,除非明確指定了內置版本。

所以你看想改變目錄結構:

​​3210

如果路徑感覺它變得有點長,有哪些可以移出個人的一些遺留的神器子目錄小部件並與名稱空間的小部件目錄一起設置。一些例子是src和lib目錄 - 我個人不確定整個列表是什麼,如果甚至存在對它們的限制(當然,有些工件總是可能會在其下找到目錄,當然,在這種情況下,它們不應該被移動)。