com.vaadin.server.serviceException after 7.0.9 to 7.1.1 platform upgrade

I have repeated this twice now to confirm it is reproducible. I want to upgrade from 7.0.9 to 7.1.1 to take advantage of the new Input Dialog. I am using a Mac and my other developer is using a Windows 10 PC. We both updated our project from the same git repo from scratch, she can open the project and change the platform version from 7.0.9 to 7.1.1 and open and run the project via both Intellij and just using gradlew.bat with a clean deploy successfully.

I perform the same upgrade on my Mac from 7.0.9 to 7.1.1 from the same source code and everything looks good. The project builds and runs in debug, but before the login screen is shown, the browser dumps an error message. I have included the full catalina.out with the startup steps in case that helps.

Any pointers on what maybe going on are appreciated.

Listening for transport dt_socket at address: 8787
Sep 26, 2019 6:16:43 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/mwhy/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
Sep 26, 2019 6:16:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Sep 26, 2019 6:16:43 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Sep 26, 2019 6:16:43 PM org.apache.catalina.startup.Catalina load
INFO: Server initialization in [938] milliseconds
Sep 26, 2019 6:16:44 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Catalina]
Sep 26, 2019 6:16:44 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.14]
Sep 26, 2019 6:16:44 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory [/Users/mwhy/Documents/dev/cuba/fish-surveys-admin/deploy/tomcat/webapps/app]
18:16:45.773 INFO  c.h.cuba.core.sys.AppComponents         - Using app components: [com.haulmont.cuba, com.haulmont.reports, com.haulmont.charts, com.haulmont.addon.restapi]
18:16:45.822 INFO  c.h.c.c.s.AbstractWebAppContextLoader   - Loading app properties from classpath:gov/azgfd/fins/web-app.properties
18:16:45.830 INFO  c.h.c.c.s.AbstractWebAppContextLoader   - Loading app properties from /WEB-INF/local.app.properties
18:16:45.991 INFO  c.h.c.c.s.e.EnvironmentChecksRunner     - Environment checks on web module completed successfully
18:16:49.012 INFO  c.h.c.c.s.r.d.StaticServerSelector      - Server URLs: [http://localhost:8080/app-core/remoting]
18:16:49.037 INFO  c.h.c.w.s.r.WebRemoteProxyBeanCreator   - Configuring proxy beans for local service invocations: [cuba_AuthenticationService, cuba_TrustedClientService, cuba_ServerInfoService, cuba_UserSettingService, cuba_UserManagementService, cuba_DataService, cuba_ConfigStorageService, cuba_PersistenceManagerService, cuba_LockService, cuba_UserSessionService, cuba_FoldersService, cuba_EmailService, cuba_FileStorageService, cuba_EntitySnapshotService, cuba_UniqueNumbersService, cuba_LocalizedMessageService, cuba_ResourceService, cuba_ScheduledTasksService, cuba_EntityLogService, cuba_TestingService, cuba_DomainDescriptionService, cuba_RelatedEntitiesService, cuba_EntitySqlGenerationService, cuba_NumberIdService, cuba_QueryResultsService, cuba_DynamicAttributesCacheService, cuba_EntityRestoreService, cuba_LocalFileExchangeService, cuba_EntityImportExportService, cuba_ConstraintLocalizationService, cuba_AttributeAccessService, cuba_ExceptionReportService, cuba_BulkEditorDataService, cuba_AttributeOptionsLoaderService]
18:16:49.040 INFO  c.h.c.w.s.r.WebRemoteProxyBeanCreator   - Configuring proxy beans for local service invocations: [report_ReportService, report_ReportWizardService]
18:16:49.040 INFO  c.h.c.w.s.r.WebRemoteProxyBeanCreator   - Configuring proxy beans for local service invocations: [restapi_ServerTokenStore]
18:16:49.040 INFO  c.h.c.w.s.r.WebRemoteProxyBeanCreator   - Configuring proxy beans for local service invocations: [fins_FishSurveyService, fins_FinsScheduledTasksService, fins_FinsSharedService, fins_FinsHmsService, fins_FinsStockingService]
18:16:50.697 INFO  c.h.c.c.s.CubaThreadPoolTaskScheduler   - Initializing ExecutorService 'scheduler'
18:16:51.022 INFO  c.h.cuba.core.sys.jmx.MBeanExporter     - Registering beans for JMX exposure: [app.cuba:type=ConfigStorage, app.cuba:type=CachingFacade, app.cuba:type=FileUploading, app.cuba:type=JmxNodeIdentifier, app.cuba:type=JmxLogControl, app.cuba:type=ClassLoaderManager, app.cuba:type=StatisticsCounter]
18:16:51.174 INFO  c.h.cuba.core.sys.MetadataImpl          - Initializing metadata
18:16:51.702 INFO  c.h.cuba.core.sys.MetadataImpl          - Metadata initialized in 528 ms
18:16:51.876 INFO  c.h.a.r.a.r.RestAPIDispatcherServlet    - Initializing Servlet 'rest_api'
18:16:54.472 INFO  c.h.a.r.a.r.RestAPIDispatcherServlet    - Completed initialization in 2595 ms
18:16:54.476 INFO  c.h.c.c.s.AbstractWebAppContextLoader   - AppContext started
18:16:54.496 INFO  c.h.c.web.sys.CubaDispatcherServlet     - Initializing Servlet 'dispatcher'
18:16:54.607 INFO  c.h.c.web.sys.CubaDispatcherServlet     - Completed initialization in 111 ms
Sep 26, 2019 6:16:54 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory [/Users/mwhy/Documents/dev/cuba/fish-surveys-admin/deploy/tomcat/webapps/app] has finished in [10,578] ms
Sep 26, 2019 6:16:54 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory [/Users/mwhy/Documents/dev/cuba/fish-surveys-admin/deploy/tomcat/webapps/app-core]
18:16:54.734 INFO  c.h.cuba.core.sys.AppComponents         - Using app components: [com.haulmont.cuba, com.haulmont.reports, com.haulmont.charts, com.haulmont.addon.restapi]
18:16:54.746 INFO  c.h.c.c.s.AbstractWebAppContextLoader   - Loading app properties from classpath:gov/azgfd/fins/app.properties
18:16:54.747 INFO  c.h.c.c.s.AbstractWebAppContextLoader   - Loading app properties from /WEB-INF/local.app.properties
18:16:54.755 INFO  c.h.cuba.core.sys.AppContextLoader      - DbmsType of the main database is set to mssql2012
18:16:54.768 INFO  c.h.c.c.s.e.DataStoresCheck             - Checking connection to data store _MAIN_
18:16:55.553 INFO  c.h.c.c.s.e.EnvironmentChecksRunner     - Environment checks on core module completed successfully
18:16:55.771 INFO  c.h.c.c.s.p.PersistenceConfigProcessor  - Creating file /Users/mwhy/Documents/dev/cuba/fish-surveys-admin/deploy/tomcat/work/app-core/persistence.xml
18:17:00.568 INFO  c.h.c.c.s.CubaThreadPoolTaskScheduler   - Initializing ExecutorService 'scheduler'
18:17:01.150 INFO  c.h.c.c.s.CubaThreadPoolTaskScheduler   - Initializing ExecutorService 'restapi_scheduler'
18:17:01.322 INFO  c.h.cuba.core.sys.jmx.MBeanExporter     - Registering beans for JMX exposure: [app-core.cuba:type=PersistenceManager, app-core.cuba:type=ConfigStorage, app-core.cuba:type=UserSessions, app-core.cuba:type=UniqueNumbers, app-core.cuba:type=Emailer, app-core.cuba:type=EntityLog, app-core.cuba:type=FileStorage, app-core.cuba:type=LockManager, app-core.cuba:type=CachingFacade, app-core.cuba:type=ClusterManager, app-core.cuba:type=ScriptingManager, app-core.cuba:type=ServerInfo, app-core.cuba:type=Scheduling, app-core.cuba:type=PasswordEncryptionSupport, app-core.cuba:type=JmxNodeIdentifier, app-core.cuba:type=JmxLogControl, app-core.cuba:type=ClassLoaderManager, app-core.cuba:type=StatisticsCounter, app-core.cuba:type=BruteForceProtection, app-core.cuba:type=QueryCacheSupport]
18:17:01.583 INFO  c.h.cuba.core.sys.jmx.MBeanExporter     - Registering beans for JMX exposure: [app-core.reports:type=CubaOfficeIntegration, app-core.reports:type=ReportImportExport, app-core.reports:type=ReportingMigrator]
18:17:01.603 INFO  c.h.cuba.core.sys.jmx.MBeanExporter     - Registering beans for JMX exposure: [app-core.restapi:type=ServerTokenStore]
18:17:01.614 INFO  c.h.cuba.core.sys.MetadataImpl          - Initializing metadata
18:17:01.897 INFO  c.h.cuba.core.sys.MetadataImpl          - Metadata initialized in 283 ms
18:17:02.996 WARN  c.h.c.c.s.p.EclipseLinkSessionEventListener- 
=================================================================
Incorrectly defined fetch types detected:
EAGER fetch type detected for reference field fishStockingInfo of entity FinsFishStocking; Set to LAZY
EAGER fetch type detected for reference field fishStockingTransport of entity FinsFishStocking; Set to LAZY
EAGER fetch type detected for reference field transportEquipment of entity FinsFishStockingTransport; Set to LAZY
=================================================================
18:17:03.658 INFO  c.h.cuba.core.app.ConfigStorage         - Loading DB-stored app properties cache
18:17:04.185 INFO  c.h.c.c.s.DefaultPermissionValuesConfig - Initializing default permission values
18:17:04.419 INFO  c.h.c.s.a.AuthenticationManagerBean     - Logged in: 91b9781b-b98f-7669-04ac-17755bb9ba61 [anonymous]
18:17:04.701 INFO  c.h.c.s.a.AuthenticationManagerBean     - Logged in: fe522f8d-4784-ad7e-9a3b-9bdc70f00a30 [admin]
18:17:04.702 INFO  c.h.c.c.sys.AbstractViewRepository      - Initializing views
18:17:05.157 INFO  c.h.c.s.app.UserSessionLogBean          - Dead session records have been closed
18:17:05.158 INFO  c.h.c.c.s.AbstractWebAppContextLoader   - AppContext started
18:17:05.159 INFO  c.h.c.c.sys.remoting.RemotingServlet    - Initializing Servlet 'remoting'
18:17:05.190 INFO  c.h.c.c.s.r.RemoteServicesBeanCreator   - Configuring remote services
18:17:05.389 INFO  c.h.c.c.sys.remoting.RemotingServlet    - Completed initialization in 230 ms
Sep 26, 2019 6:17:05 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory [/Users/mwhy/Documents/dev/cuba/fish-surveys-admin/deploy/tomcat/webapps/app-core] has finished in [10,771] ms
Sep 26, 2019 6:17:05 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Sep 26, 2019 6:17:05 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Sep 26, 2019 6:17:05 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in [21,576] milliseconds
18:17:05.668 WARN  c.v.s.DefaultDeploymentConfiguration    - 
=================================================================
Vaadin is running in DEBUG MODE.
Add productionMode=true to web.xml to disable debug features.
To show debug window, add ?debug to your application URL.
=================================================================
18:17:11.174 INFO  c.h.cuba.gui.config.WindowConfig        - WindowConfig initialized in 84 ms
18:17:12.020 ERROR com.haulmont.cuba.web.log.AppLog        - Exception: 
com.google.common.util.concurrent.ExecutionError: java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.toImmutableList()Ljava/util/stream/Collector;
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-jdk5-17.0.jar:na]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector.getScreenIntrospectionData(UiControllerReflectionInspector.java:141) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerDependencyInjector.inject(UiControllerDependencyInjector.java:110) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:241) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.sys.WebScreens.create(WebScreens.java:175) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.Screens.create(Screens.java:70) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.App.createTopLevelWindow(App.java:300) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.DefaultApp.initializeUi(DefaultApp.java:243) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.DefaultApp.connectionStateChanged(DefaultApp.java:111) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[cuba-global-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.security.ConnectionImpl.fireStateChangeListeners(ConnectionImpl.java:228) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.security.ConnectionImpl.login(ConnectionImpl.java:106) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.DefaultApp.loginOnStart(DefaultApp.java:311) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.AppUI.setupUI(AppUI.java:477) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.AppUI.init(AppUI.java:337) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.vaadin.ui.UI.doInit(UI.java:738) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:209) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:67) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) ~[cuba-web-7.1.1.jar:7.1.1]
	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.1.jar:7.1.1]
	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.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.14]
	at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.toImmutableList()Ljava/util/stream/Collector;
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector.getAnnotatedInjectElementsNotCached(UiControllerReflectionInspector.java:276) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector.getScreenIntrospectionDataNotCached(UiControllerReflectionInspector.java:222) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector$1.load(UiControllerReflectionInspector.java:68) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector$1.load(UiControllerReflectionInspector.java:65) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-jdk5-17.0.jar:na]
	... 54 common frames omitted
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/Users/mwhy/Documents/dev/cuba/fish-surveys-admin/deploy/tomcat/shared/lib/groovy-2.5.6.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
18:17:35.730 ERROR com.haulmont.cuba.web.log.AppLog        - Exception: 
com.google.common.util.concurrent.ExecutionError: java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.toImmutableList()Ljava/util/stream/Collector;
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-jdk5-17.0.jar:na]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector.getScreenIntrospectionData(UiControllerReflectionInspector.java:141) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerDependencyInjector.inject(UiControllerDependencyInjector.java:110) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:241) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.sys.WebScreens.create(WebScreens.java:175) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.Screens.create(Screens.java:70) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.App.createTopLevelWindow(App.java:300) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.DefaultApp.initializeUi(DefaultApp.java:243) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.DefaultApp.connectionStateChanged(DefaultApp.java:111) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[cuba-global-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.security.ConnectionImpl.fireStateChangeListeners(ConnectionImpl.java:228) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.security.ConnectionImpl.login(ConnectionImpl.java:106) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.DefaultApp.loginOnStart(DefaultApp.java:311) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.AppUI.setupUI(AppUI.java:477) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.AppUI.init(AppUI.java:337) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.vaadin.ui.UI.doInit(UI.java:738) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:209) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:67) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) ~[vaadin-server-8.6.4-20-cuba.jar:8.6.4-20-cuba]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) ~[cuba-web-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) ~[cuba-web-7.1.1.jar:7.1.1]
	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.1.jar:7.1.1]
	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.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.14]
	at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.toImmutableList()Ljava/util/stream/Collector;
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector.getAnnotatedInjectElementsNotCached(UiControllerReflectionInspector.java:276) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector.getScreenIntrospectionDataNotCached(UiControllerReflectionInspector.java:222) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector$1.load(UiControllerReflectionInspector.java:68) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.gui.sys.UiControllerReflectionInspector$1.load(UiControllerReflectionInspector.java:65) ~[cuba-gui-7.1.1.jar:7.1.1]
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-jdk5-17.0.jar:na]
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-jdk5-17.0.jar:na]
	... 54 common frames omitted

Hello @mwhy

It seem that the problem is related to wrong dependencies. Please try to do the following steps:

  1. remove tomcat
  2. clean the project (./gradlew clean)
  3. build the project and refresh dependencies (./gradlew assemble --refresh-dependencies)
  4. deploy and run the project again (./gradlew setupTomcat deploy start)

Please also check that local maven (~/.m2/repository/) doesn’t contain anything, if the project is using .m2.

@firstova please try to reproduce the case.

Thank you for these steps. I tried them twice and received the same error after tomcat starts up and I attempt to access http://localhost:8080/app/.

For the moment we will rollback to 7.0.9 and hopefully @firstova can reproduce or has other suggestions.

Here’s something that my help to diagnose.

I started a new project using the CUBA CLI, using 7.0.9 as the platform version. I performed the upgrade to 7.1.1 successfully.

After researching the error I see it’s the Google Guava library that seems to be complaining.

In my successful upgrade project I see in the tomcat/shared/lib folder the file guava-27.1-jre.jar.

In my failed upgrade project I see guava-27.1-jre.jar AND guava-jdk5-17.0.jar in the tomcat/shared/lib folder.

If I delete the deploy folder and perform the steps Daniil suggested, the guava-jdk5-17.0.jar library is always part of the tomcat/shared/lib.

I don’t know if this is related, but having the jre and the jdk, does seem to be a potential issue right?

Hello @mwhy

I don’t know if this is related, but having the jre and the jdk, does seem to be a potential issue right

In fact it is the reason of the problem - ImmutableSet in guava jdk5 doesn’t contain required method - toImmutableList().

You should get rid of redundant Guava version to solve the problem.

Regards,
Daniil

I have tried manually removing it, but every new deploy adds it back. Also, why doesn’t the SDK get deployed to the shared lib folder on my colleagues Windows machine with the same source code as me, when we perform the platform upgrade?

Here’s the guts of my build.gradle if this helps.

buildscript {
    ext.cubaVersion = '7.1.1'
    repositories {
        mavenCentral()

        maven {
            url 'https://repo.cuba-platform.com/content/groups/work'
            credentials {
                username(rootProject.hasProperty('repoUser') ? rootProject['repoUser'] : 'cuba')
                password(rootProject.hasProperty('repoPass') ? rootProject['repoPass'] : 'cuba123')
            }
        }
        maven {
            url 'https://repo.cuba-platform.com/content/groups/premium'
            credentials {
                username(rootProject.hasProperty('premiumRepoUser') ? rootProject['premiumRepoUser'] : System.getenv('180416001477'))
                password(rootProject.hasProperty('premiumRepoPass') ? rootProject['premiumRepoPass'] : System.getenv('3ZR6876mxBI2'))
            }
        }
//        maven {
//            url "https://plugins.gradle.org/m2/"
//        }
    }
    dependencies {
        classpath "com.haulmont.gradle:cuba-plugin:$cubaVersion"
//        classpath "gradle.plugin.org.gretty:gretty:2.2.0"
        // add spotbugs plugin
        classpath "gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:1.6.5"
    }
}

def servletApi = 'javax.servlet:javax.servlet-api:3.1.0'

apply(plugin: 'cuba')

def modulePrefix = 'app'

def globalModule = project(":${modulePrefix}-global" )
def coreModule = project(":${modulePrefix}-core" )
def guiModule = project(":${modulePrefix}-gui" )
def webModule = project(":${modulePrefix}-web" )
def webToolkitModule = project(":${modulePrefix}-web-toolkit" )

cuba {
    artifact {
        group = 'gov.azgfd.fins'
        version = "1.0.2"
        isSnapshot = true
    }
    tomcat {
        dir = "$project.rootDir/deploy/tomcat"
    }
    ide {
        copyright ="Copyright"
        vcs = 'Git'
    }
}

dependencies {
    appComponent("com.haulmont.cuba:cuba-global:$cubaVersion")
    appComponent("com.haulmont.reports:reports-global:$cubaVersion")
    appComponent("com.haulmont.charts:charts-global:$cubaVersion")
    appComponent('com.haulmont.addon.restapi:restapi-global:7.1.0')
}


def mssql = 'com.microsoft.sqlserver:mssql-jdbc:7.2.2.jre11'

configure([globalModule, coreModule, guiModule, webModule, webToolkitModule]) {
    apply(plugin: 'java')
    apply(plugin: 'maven')
    apply(plugin: 'cuba')

    dependencies {
        testCompile('junit:junit:4.12')
    }

    task sourceJar(type: Jar) {
        from file('src')
        classifier = 'sources'
    }

    artifacts {
        archives sourceJar
    }
}

configure(globalModule) {
    dependencies {
        if (!JavaVersion.current().isJava8()) {
            println 'Not Java8. Loading java.xml.bind and org.glassfish.jaxb'
            runtime('javax.xml.bind:jaxb-api:2.3.1')
            runtime('org.glassfish.jaxb:jaxb-runtime:2.3.1')
        }
        compile 'com.sendgrid:sendgrid-java:4.4.1'
        compile 'org.javatuples:javatuples:1.2'
    }
    entitiesEnhancing {
        main { enabled = true }
    }

    buildInfo {
        appName = '7.0.9 to 7.1.1 Conversion Test'
        def buildNumber = String.valueOf(System.getenv("FSBuildNumber"))
        properties = ['Build Number': buildNumber]
    }
}

configure(coreModule) {

    configurations {
        jdbc
        dbscripts
    }

    dependencies {
        compile(globalModule)
        // https://mvnrepository.com/artifact/org.glassfish/javax.json
        compileOnly(servletApi)
        jdbc(mssql) { exclude(group: 'com.microsoft.azure', module: 'azure-keyvault') }
        testRuntime(mssql) { exclude(group: 'com.microsoft.azure', module: 'azure-keyvault') }
        compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.27'
        compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.27'
        compile 'org.glassfish.jersey.inject:jersey-hk2:2.27'
        compile 'org.glassfish:javax.json:1.1.4'
    }

    task cleanConf(description: 'Cleans up conf directory') {
        doLast {
            def dir = new File(cuba.tomcat.dir, "/conf/${modulePrefix}-core")
            if (dir.isDirectory()) {
                ant.delete(includeemptydirs: true) {
                    fileset(dir: dir, includes: '**/*', excludes: 'local.app.properties')
                }
            }
        }
    }

    task deploy(dependsOn: [assemble, cleanConf], type: CubaDeployment) {
        appName = "${modulePrefix}-core"
        appJars(modulePrefix + '-global', modulePrefix + '-core')
    }


    task deployConf(dependsOn: [deploy], type: Copy) {
        from file('src')
        include "gov/azgfd/fins/**"
        into "$cuba.tomcat.dir/conf/${modulePrefix}-core"
    }

    task createDb(dependsOn: assembleDbScripts, description: 'Creates local database', type: CubaDbCreation) {
        dbms = 'mssql'
        host = 'gfvw-sql1d'
        dbName = 'fins'
        dbUser = 'azgfd_admin'
        dbPassword = '4os7#*0)#1'
        dbmsVersion = '2012'
        }

    task updateDb(dependsOn: assembleDbScripts, description: 'Updates local database', type: CubaDbUpdate) {
        dbms = 'mssql'
        host = 'gfvw-sql1d'
        dbName = 'fins'
        dbUser = 'azgfd_admin'
        dbPassword = '4os7#*0)#1'
        dbmsVersion = '2012'
        }
}

configure(guiModule) {
    dependencies {
        compile(globalModule)

    }

    task deployConf(type: Copy) {
        from file('src')
        include "gov/azgfd/fins/**"
        into "$cuba.tomcat.dir/conf/${modulePrefix}"
    }
}

configure(webModule) {
    configurations {
        webcontent
    }

    dependencies {

        compileOnly(servletApi)
        compile(guiModule)
        compile('org.apache.poi:poi:3.17')
        compile('org.apache.poi:poi-ooxml:3.17')
        compile 'com.google.api-client:google-api-client:1.23.0'
        compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
        compile 'com.google.apis:google-api-services-sheets:v4-rev496-1.23.0'
        compile 'com.google.apis:google-api-services-drive:v3-rev94-1.23.0'
    }

    jar {
        with copySpec {
            from sourceSets.main.allJava
            include "gov/azgfd/fins/web/toolkit/ui/client/**"
        }
    }

    
    task webArchive(type: Zip) {
        from file("$buildDir/web")
        from file('web')
        classifier = 'web'
    }

    artifacts {
        archives webArchive
    }

    task deployConf(type: Copy) {
        from file('src')
        include "gov/azgfd/fins/**"
        into "$cuba.tomcat.dir/conf/${modulePrefix}"
    }

    task clearMessagesCache(type: CubaClearMessagesCache) {
        appName = "${modulePrefix}"
    }
    deployConf.dependsOn clearMessagesCache

    task cleanConf(description: 'Cleans up conf directory') {
        doLast {
            def dir = new File(cuba.tomcat.dir, "/conf/${modulePrefix}")
            if (dir.isDirectory()) {
                ant.delete(includeemptydirs: true) {
                    fileset(dir: dir, includes: '**/*', excludes: 'local.app.properties')
                }
            }
        }
    }

    task deploy(dependsOn: [assemble, cleanConf, copyGSuite], type: CubaDeployment) {
        appName = "${modulePrefix}"
        appJars(modulePrefix + '-global', modulePrefix + '-gui', modulePrefix + '-web')
    }

    task buildScssThemes(type: CubaWebScssThemeCreation)
    task deployThemes(type: CubaDeployThemeTask, dependsOn: buildScssThemes)
    assemble.dependsOn buildScssThemes

    task themesJar(type: Jar) {
        from file('themes')
        classifier = 'themes'
    }

    artifacts {
        archives themesJar
    }
}


configure(webToolkitModule) {
    dependencies {
        compile(webModule)

        
    }
    
    jar {
        from sourceSets.main.allJava
    }
    
    task buildWidgetSet(type: CubaWidgetSetBuilding) {
        widgetSetClass = 'gov.azgfd.fins.web.toolkit.ui.AppWidgetSet'
    }
    
    task debugWidgetSet(type: CubaWidgetSetDebug) {
        widgetSetClass = 'gov.azgfd.fins.web.toolkit.ui.AppWidgetSet'
    } 

    task webArchive(dependsOn: buildWidgetSet, type: Jar) {
        from file("$buildDir/web")
        classifier = 'client'
    }

    artifacts {
        archives webArchive
    }

    task deploy(dependsOn: webArchive, type: Copy) {
        from webArchive
        into "$cuba.tomcat.dir/webapps/${modulePrefix}/WEB-INF/lib"
    }
}


task undeploy(type: Delete, dependsOn: ":${modulePrefix}-web:cleanConf" ) {
    delete("$cuba.tomcat.dir/shared")
    delete("$cuba.tomcat.dir/webapps/${modulePrefix}-core" )
    delete("$cuba.tomcat.dir/webapps/${modulePrefix}" )
}

task restart(dependsOn: ['stop', ":${modulePrefix}-core:deploy", ":${modulePrefix}-web:deploy"], description: 'Redeploys applications and restarts local Tomcat') {
    doLast {
        ant.waitfor(maxwait: 6, maxwaitunit: 'second', checkevery: 2, checkeveryunit: 'second') {
            not {
                socket(server: 'localhost', port: '8787')
            }
        }
        start.execute()
    }
}


apply from: 'extra.gradle'

// apply spotbugs for Java projects
subprojects {
    apply plugin: "com.github.spotbugs"
}

If I stop tomcat, delete guava-jdk5-17.0.jar and start tomcat then I can login successfully.

A ./gradlew deploy start adds guava-jdk5-17.0.jar back to the shared lib folder and the login screen throws the error.

So I am guessing that one of my dependencies is dependent upon guava-jdk5-17.0.jar. Are there any tools I can use to identify that dependency?

Are there any tools I can use to identify that dependency?

You can use built-in Gradle task:

./gradlew dependencies

To show dependencies of the single module use the following:

./gradlew :app-web:dependencies

Regards,
Daniil

Thank for the ./gradlew :app-web:dependencies command that was the one that enabled me to identify the library that had the dependency on guava-jdk5-17.0.jar. It is the Google API Client for accessing their G-Suite products - documents, sheets, drive etc.

Luckily, I used these APIs for a proof-of-concept and decide to take an alternative approach. Therefore I can comment out the dependencies in build.grade and the test code.

Once I did this, the conversion from 7.0.9 to 7.1.1 is now working successfully.

Thank you for sticking with me while we plowed through troubleshooting and I learnt some useful tools along the way.

1 Like

Hi guys,

I’m experiencing the same problem, but only on Linux. On Windows I can run my application normally.
On Linux, on the other hand, only when I stop tomcat, delete guava jdk and start Tomcat again.

I need to keep the Google PubSub dependency. Any suggestion?

Regards, Rafael Ratacheski

Rafael,

I don’t know if this pertains to you but I hope it helps you or someone else.

I was attempting to add the firebase admin-sdk using compile 'com.google.firebase:firebase-admin:7.2.0’
Upon loading the app I was greeted with a similar error to Michael Why’s error log. Firebase-admin added a newer version of guava to the dependency list.
The problem is that gradle will declare the newest package from a group the default package to use and as such cuba is no longer pointed to it’s default guava version (at the time of writing it is guava:28.1-jre).
The workaround is to exclude the group that conflicts with the dependency you wish to add, forcing that dependency to use the library cuba needs.

compile ('com.google.firebase:firebase-admin:7.2.0') {
    exclude group: 'com.google.guava'
}

I found it best to perform Danill Tsaryov’s instructions above regarding tomcat and gradle and then add the code above (reformatted to fit your needs of course). Hope this helps!

-Riley Duncan

2 Likes