I had project on Cuba V6 Then migrated it to V7 Everything worked perfectly. I didn’t change this code the only thing I did is probably changed JDK from 8 to 11 (though running compiled code on JRE8) and updated Cuba plugin for IDEA to the latest nightly . Then at some point (yeah I can fortunately go back in my git history but it’s not critical and you maybe are able to point me straight to the cause) when I deploy app and start it for the first time I get:
17:49:39.827 INFO c.h.cuba.gui.config.WindowConfig - WindowConfig initialized in 59 ms
17:49:41.041 ERROR com.haulmont.cuba.web.log.AppLog - Exception in com.haulmont.cuba.web.AppUI:
java.lang.IllegalArgumentException: Unable to find menu item with id: cabinet
at com.haulmont.cuba.web.gui.components.mainwindow.WebAppMenu.getMenuItemNN(WebAppMenu.java:196) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.dtc.callbook.web.screens.ExtAppMainWindow.init(ExtAppMainWindow.java:84) ~[app-web-0.2-SNAPSHOT.jar:na]
at com.haulmont.cuba.gui.components.AbstractWindow.init(AbstractWindow.java:96) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[cuba-global-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.gui.screen.Screen.fireEvent(Screen.java:128) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.gui.screen.UiControllerUtils.fireEvent(UiControllerUtils.java:58) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:242) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.sys.WebScreens.create(WebScreens.java:165) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.gui.Screens.create(Screens.java:70) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.sys.navigation.navigationhandler.RootNavigationHandler.doHandle(RootNavigationHandler.java:84) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.sys.navigation.ScreenNavigator.handleScreenNavigation(ScreenNavigator.java:53) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.AppUI.processRequest(AppUI.java:650) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.AppUI.processExternalLink(AppUI.java:608) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.AppUI.init(AppUI.java:346) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.vaadin.ui.UI.doInit(UI.java:738) ~[vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:209) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:67) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) [cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) [cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.14]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.14]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93) [cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [catalina.jar:9.0.14]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.14]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [catalina.jar:9.0.14]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.14]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.14]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) [catalina.jar:9.0.14]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.14]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.14]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-coyote.jar:9.0.14]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.14]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834) [tomcat-coyote.jar:9.0.14]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417) [tomcat-coyote.jar:9.0.14]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.14]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.14]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
Though I have:
\modules\web\src\com\dtc\callbook\web\screens\ExtAppMainWindow.java
:
package com.dtc.callbook.web.screens;
public class ExtAppMainWindow extends AppMainWindow {
//...
@Override
public void ready() {
super.ready();
openWindow("callbookScreen", OpenType.NEW_TAB);
}
@Override
public void init(Map<String, Object> params) {
super.init(params);
//..
AppMenu.MenuItem item = createMenuItem("admin-menu", null, null);
AppMenu.MenuItem subItem;
// HERE is ExtAppMainWindow.java:84
item = mainMenu.getMenuItemNN("cabinet");
if (currentMember != null) {
item.setCommand(menuItem -> {
AppBeans.get(WindowManagerProvider.class).get().openEditor(wc.getWindowInfo("cabinet"), currentMember, OpenType.NEW_TAB);
});
} else {
item.setVisible(false);
}
//..
}
private AppMenu.MenuItem createMenuItem(String id, @Nullable String icon, @Nullable Consumer<AppMenu.MenuItem> command) {
return mainMenu.createMenuItem(id, messages.getMessage("", "menu-config." + id), icon, command);
}
}
C:\D\CallBookV7_planner\modules\web\src\com\dtc\callbook\web-menu.xml
:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<menu-config xmlns="http://schemas.haulmont.com/cuba/menu.xsd">
<menu id="application-callbook"
insertBefore="administration">
<item screen="callbook$Ministry.browse"/>
</menu>
<item icon="BOOK"
insertBefore="administration"
screen="callbookScreen">
<param name="mode"
value="Default"/>
</item>
<item id="cabinet"
icon="USER"
insertBefore="administration"/>
<menu id="application-planner"
insertBefore="administration">
<!--...-->
</menu>
</menu-config>
C:\D\CallBookV7_planner\modules\web\src\com\dtc\callbook\web\screens\ext-mainwindow.xml
:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
class="com.dtc.callbook.web.screens.ExtAppMainWindow"
extends="/com/haulmont/cuba/web/app/mainwindow/mainwindow.xml"
messagesPack="com.dtc.callbook.web.screens">
<dialogMode height="600"
width="800"/>
<layout/>
</window>
And what’s the most interesting - everything works as expected!
I believe it may be connected to multithreaded execution maybe…