2012-09-12 4 views
3

새로운 응용 프로그램을 사용하여 새 응용 프로그램을 작성했지만 이전 응용 프로그램에서 위젯 이름 공간 (조건)을 가져 오면 컴파일러에서 오류가 발생했습니다.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 유물이왔다 in in Aviarc 3이며 스타일은 다음과 같습니다.

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

Aviarc 3은 여전히 ​​레거시 아티팩트를 지원하지만 모두 또는 전혀 없습니다. Aviarc 3이 artifact 디렉토리에서 레거시 가공물을 발견하면, 직접적인 하위 디렉토리에 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 디렉토리입니다. 개인 목록에는 제한 사항이있는 경우 개별 목록이 무엇인지 개인적으로 확신 할 수 없습니다. (물론 일부 아티팩트는 자신 아래에 디렉토리를 찾을 가능성이 있습니다. 옮겨서는 안됩니다.)

관련 문제