MetaClass not found

What specifically in Cuba.platform might cause the “MetaClass not found” error?

2 Likes

It happens when the metadata framework cannot find a meta-class by name or by Java class.
If you attach an exception stacktrace, I will say more about the possible reason.


java.lang.RuntimeException: Push failed
	com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:171)
	com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:146)
	com.vaadin.ui.UI.push(UI.java:1551)
	com.vaadin.server.VaadinSession.unlock(VaadinSession.java:997)
	com.vaadin.server.VaadinService.ensureAccessQueuePurged(VaadinService.java:1814)
	com.vaadin.server.VaadinService.accessSession(VaadinService.java:1780)
	com.vaadin.server.VaadinSession.access(VaadinSession.java:1380)
	com.vaadin.server.VaadinService.fireSessionDestroy(VaadinService.java:458)
	com.vaadin.server.VaadinSession.valueUnbound(VaadinSession.java:324)
	org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1839)
	org.apache.catalina.session.StandardSession.expire(StandardSession.java:892)
	org.apache.catalina.session.StandardSession.expire(StandardSession.java:779)
	org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1279)
	org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:171)
	com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:162)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:108)
	com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:95)
root cause

java.lang.IllegalArgumentException: MetaClass not found for sales$Order
	com.haulmont.cuba.core.sys.CachingMetadataSession.getClassNN(CachingMetadataSession.java:70)
	com.haulmont.cuba.core.global.ExtendedEntities.getEffectiveMetaClass(ExtendedEntities.java:115)
	com.haulmont.cuba.core.sys.jpql.DomainModel.getEntityByName(DomainModel.java:62)
	com.haulmont.cuba.core.sys.jpql.tree.IdentificationVariableNode.identifyVariableEntity(IdentificationVariableNode.java:98)
	com.haulmont.cuba.core.sys.jpql.IdVarSelector.post(IdVarSelector.java:88)
	org.antlr.runtime.tree.TreeVisitor.visit(TreeVisitor.java:66)
	org.antlr.runtime.tree.TreeVisitor.visit(TreeVisitor.java:60)
	org.antlr.runtime.tree.TreeVisitor.visit(TreeVisitor.java:60)
	org.antlr.runtime.tree.TreeVisitor.visit(TreeVisitor.java:60)
	com.haulmont.cuba.core.sys.jpql.QueryTreeAnalyzer.prepare(QueryTreeAnalyzer.java:57)
	com.haulmont.cuba.core.sys.jpql.QueryTreeAnalyzer.prepare(QueryTreeAnalyzer.java:45)
	com.haulmont.cuba.core.global.QueryParserAstBased.getQueryAnalyzer(QueryParserAstBased.java:75)
	com.haulmont.cuba.core.global.QueryParserAstBased.getParamNames(QueryParserAstBased.java:91)
	com.haulmont.cuba.gui.data.impl.AbstractCollectionDatasource.createLoadContextQuery(AbstractCollectionDatasource.java:530)
	com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.beforeLoadData(CollectionDatasourceImpl.java:563)
	com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.loadData(CollectionDatasourceImpl.java:537)
	com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:148)
	com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refresh(CollectionDatasourceImpl.java:108)
	com.haulmont.cuba.gui.data.impl.CollectionDatasourceImpl.refreshIfNotSuspended(CollectionDatasourceImpl.java:99)
	com.haulmont.cuba.gui.data.impl.CollectionDsHelper.autoRefreshInvalid(CollectionDsHelper.java:106)
	com.haulmont.cuba.web.gui.data.CollectionDsWrapper.size(CollectionDsWrapper.java:165)
	com.vaadin.ui.AbstractSelect.size(AbstractSelect.java:795)
	com.vaadin.ui.Table.doPaintContent(Table.java:3377)
	com.vaadin.ui.Table.paintContent(Table.java:3361)
	com.haulmont.cuba.web.toolkit.ui.CubaTable.paintContent(CubaTable.java:777)
	com.vaadin.server.LegacyPaint.paint(LegacyPaint.java:65)
	com.vaadin.server.communication.LegacyUidlWriter.write(LegacyUidlWriter.java:82)
	com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:145)
	com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:168)
	com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:146)
	com.vaadin.ui.UI.push(UI.java:1551)
	com.vaadin.server.VaadinSession.unlock(VaadinSession.java:997)
	com.vaadin.server.VaadinService.ensureAccessQueuePurged(VaadinService.java:1814)
	com.vaadin.server.VaadinService.accessSession(VaadinService.java:1780)
	com.vaadin.server.VaadinSession.access(VaadinSession.java:1380)
	com.vaadin.server.VaadinService.fireSessionDestroy(VaadinService.java:458)
	com.vaadin.server.VaadinSession.valueUnbound(VaadinSession.java:324)
	org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1839)
	org.apache.catalina.session.StandardSession.expire(StandardSession.java:892)
	org.apache.catalina.session.StandardSession.expire(StandardSession.java:779)
	org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1279)
	org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:171)
	com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:162)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:108)
	com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:95)

If there are no other exceptions before this one in the log, probably you have specified an invalid entity name in the datasource query.

1 Like

If you are using Groovy there is an internal (or Groovy) class named MetaClass. You have to manually import
import com.haulmont.chile.core.model.MetaClass

Bye

If you have deleted an entity then the views.xml file may not have been updated.

Check the views.xml in the global module. Invalid entries will be higlighted as such in the xml text.

If you have renamed an entity class also check that the entity name in views.xml is the same as the entity name in the entity class.