2017-12-11 22 views
0

SomeModule의 새 버전을 배포 할 때까지 Liferay 7 서버에서 SomeModule을 유용하게 사용했습니다.이 때 필요한 추가 필드는 favoriteColor입니다.속성이 필요하지만 설정되지 않았습니다. (인터페이스 용 스냅 샷 클래스를 만들 수 없습니다.)

java.lang.RuntimeException: Unable to create snapshot class for interface some.SomeModuleConfiguration 
     at com.liferay.portal.configuration.metatype.bnd.util.ConfigurableUtil._createConfigurableSnapshot(ConfigurableUtil.java:77) 
     at com.liferay.portal.configuration.metatype.bnd.util.ConfigurableUtil.createConfigurable(ConfigurableUtil.java:51) 
     at some.SomeModule.activate(SomeModule.java:50) 
... 
aused by: java.lang.IllegalStateException: Attribute is required but not set favoriteColor 
     at aQute.bnd.annotation.metatype.Configurable$ConfigurableHandler.invoke(Configurable.java:75) 
     at com.sun.proxy.$Proxy1220.favoriteColor(Unknown Source) 
     at some.SomeModuleConfigurationSnapshot407.<init>(Unknown Source) 

SomeModule에 대한 구성 UI가 favoriteColor에 대해 아무것도 표시되지 않습니다

지금 내가하는 Liferay는 말한다 포틀릿을로드하려고 할 때마다.

문제를 해결하는 방법 (예 : favoriteColor을 기본값으로 설정 하시겠습니까?

답변

1

대체 경로는 OSGi 구성 파일을 사용하여 기본값과 누락 된 값을 설정하는 것입니다. 당신은 liferay와 함께 오는 그 모듈을 위해 당신이하는 것처럼 그 파일들을 사용할 수 있습니다; 예 : elasticsearch config. (osgi/configs 디렉토리를 확인하십시오)

0

당신은 모듈의 소스 코드가 충분히 운이 좋은 경우에,이 같은이 문제를 해결할 수 있습니다 :

  1. 가 일시적으로 새 필드는 선택 사항 만들지 만, SomeModuleConfiguration.javarequired = falserequired = true를 교체합니다.
  2. 모듈을 배포하십시오.
  3. 구성 페이지를로드하고 저장하십시오.
  4. required = true으로 복원하십시오.
  5. 다시 배포하십시오.

대체 답변을 환영합니다!