2017-12-11 7 views
0

Mein Liferay 7-Server hat SomeModule verwendet, bis ich eine neue Version von SomeModule bereitgestellt habe, die ein zusätzliches erforderliches Feld favoriteColor enthält.Attribut ist erforderlich, aber nicht gesetzt (kann keine Snapshot-Klasse für die Schnittstelle erstellen)

Nun, wenn ich versuche, das Portlet zu laden Liferay sagt:

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) 

Die UI-Konfiguration für SomeModule zeigt nichts über favoriteColor.

Wie behebt man das, indem man beispielsweise favoriteColor auf den Standardwert setzt?

Antwort

1

Ein alternativer Pfad würde eine OSGi-Konfigurationsdatei verwenden, um Standardwerte und fehlende Werte festzulegen. Sie können diese Dateien genauso verwenden wie die Module, die mit liveray geliefert werden. z. B. elasticsearch config. (Überprüfen Sie Ihr osgi/configs Verzeichnis)

0

Wenn Sie das Glück haben, den Quellcode des Moduls haben, können Sie dieses Problem wie folgt lösen:

  1. Vorübergehend das neue Feld optional, aber required = true-required = false in SomeModuleConfiguration.java ersetzen.
  2. Stellen Sie das Modul bereit.
  3. Konfigurationsseite laden, speichern.
  4. Wiederherstellen auf required = true.
  5. Bereitstellung erneut.

Alternative Antworten willkommen!

Verwandte Themen