我的Liferay 7服务器正在愉快地使用SomeModule
,直到我部署了SomeModule
的新版本,其中包含额外的必填字段favoriteColor
。
现在每当我尝试加载portlet时,Liferay都说:
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
的配置界面没有显示favoriteColor
的任何内容。
如何解决这个问题,例如将favoriteColor
设置为默认值?
答案 0 :(得分:1)
如果你足够幸运拥有模块的源代码,你可以像这样解决这个问题:
required = true
替换为required = false
中的SomeModuleConfiguration.java
。required = true
。欢迎替代答案!
答案 1 :(得分:1)
备用路径是使用OSGi配置文件来设置默认值和缺失值。您可以像使用liferay附带的那些模块一样使用这些文件;例如,elasticsearch配置。 (查看你的osgi / configs目录)