2017-12-11 11 views
0

私のLiferay 7サーバーはSomeModuleの新しいバージョンを展開し、追加のフィールドが必要ですfavoriteColorを追加してから、SomeModuleを楽しく使用していました。私がポートレットをロードしようとするたび属性は必須ですが設定されていません(インターフェイス用のスナップショットクラスを作成できません)

は今の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ための設定UIがfavoriteColorについては何も表示されません。

これを修正するには、たとえばfavoriteColorをデフォルト値に設定しますか?

答えて

1

代替パスは、デフォルトおよび欠損値を設定するためにOSGi構成ファイルを使用することです。 liferayが付いているモジュールの場合と同じように、これらのファイルを使用できます。例えば、elasticsearch config。 (あなたのosgi/configsディレクトリを確認してください)

0

あなたはモジュールのソースコードを持っているには十分に幸運であれば、あなたはこのように、この問題は解決することができます:一時的に新しいフィールドをオプションに、しかしSomeModuleConfiguration.javarequired = falserequired = trueを交換

  1. を。
  2. モジュールを展開します。
  3. 設定ページを読み込んで保存します。
  4. required = trueに復元してください。
  5. 再度展開します。

代替回答がようこそ!

関連する問題