Problemas com cadastro apartir de uma JSF utilizando JPA como persistencia de dados

Olá amigos da comunidade, Já agradeço a vcs pela grande força que sempre me deram. Hj venho a vcs com mais um problema em que n tenho tido sucesso de identificar a origem.
Estou tentando fazer um cadastro de usuários em uma pagina JSF, que passa para um ManagedBean e uma DAO(com JPA). O cadastro pelo JSF esta a emitindo um erro (NoClassDefFoundError).

Mas quando faço o cadastro (Usuario, telefone e endereços. cada um em suas respectivas tabelas) pelo junit ou pela classe com o main da tudo certo e vai de boa o cadastro.

Segue abaixo o erro no console :
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name: Apache Tomcat/9.0.39
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Oct 6 2020 14:11:46 UTC
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version number: 9.0.39.0
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Windows 10
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 10.0
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: C:\Users\Notebook-Valdecir.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_14.0.2.v20200815-0932\jre
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 14.0.2+12-46
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: C:\Users\Notebook-Valdecir\WorkSpace.metadata.plugins\org.eclipse.wst.server.core\tmp0
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: C:\Program Files\apache-tomcat-9.0.39
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=C:\Users\Notebook-Valdecir\WorkSpace.metadata.plugins\org.eclipse.wst.server.core\tmp0
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=C:\Program Files\apache-tomcat-9.0.39
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=C:\Users\Notebook-Valdecir\WorkSpace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
nov. 27, 2020 11:46:39 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -XX:+ShowCodeDetailsInExceptionMessages
nov. 27, 2020 11:46:39 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0].
nov. 27, 2020 11:46:39 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
nov. 27, 2020 11:46:39 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
nov. 27, 2020 11:46:39 AM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized [OpenSSL 1.1.1g 21 Apr 2020]
nov. 27, 2020 11:46:40 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-nio-8080”]
nov. 27, 2020 11:46:40 AM org.apache.catalina.startup.Catalina load
INFO: Server initialization in [1586] milliseconds
nov. 27, 2020 11:46:40 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Catalina]
nov. 27, 2020 11:46:40 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.39]
nov. 27, 2020 11:46:42 AM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
nov. 27, 2020 11:46:42 AM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Inicializando Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) para o contexto ‘/Projeto-Livro-JSF-Primefaces-CDI’
nov. 27, 2020 11:46:43 AM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes. Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.
nov. 27, 2020 11:46:44 AM com.sun.faces.config.ConfigureListener$WebConfigResourceMonitor$Monitor
INFO: Monitoring file:/C:/Users/Notebook-Valdecir/WorkSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Projeto-Livro-JSF-Primefaces-CDI/WEB-INF/faces-config.xml for modifications
nov. 27, 2020 11:46:44 AM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Inicializando Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) para o contexto ‘/Projeto-Livro-JSF-Primefaces-CDI’
nov. 27, 2020 11:46:44 AM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes. Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.
nov. 27, 2020 11:46:45 AM com.sun.faces.mgbean.BeanManager addBean
WARNING: JSF1074: O bean gerenciado denominado ‘welcomeBean’ já foi registrado. Substituindo o tipo de classe do bean gerenciado br.com.algaworks.managedbeans.WelcomeBean por br.com.algaworks.managedbeans.WelcomeBean.
nov. 27, 2020 11:46:45 AM com.sun.faces.mgbean.BeanManager addBean
WARNING: JSF1074: O bean gerenciado denominado ‘componentStatusHtmlBean’ já foi registrado. Substituindo o tipo de classe do bean gerenciado br.com.algaworks.managedbeans.ComponentStatusHtmlBean por br.com.algaworks.managedbeans.ComponentStatusHtmlBean.
nov. 27, 2020 11:46:45 AM com.sun.faces.mgbean.BeanManager addBean
WARNING: JSF1074: O bean gerenciado denominado ‘cadastroDeUsuarioBean’ já foi registrado. Substituindo o tipo de classe do bean gerenciado br.com.algaworks.managedbeans.CadastroDeUsuarioBean por br.com.algaworks.managedbeans.CadastroDeUsuarioBean.
nov. 27, 2020 11:46:45 AM com.sun.faces.mgbean.BeanManager addBean
WARNING: JSF1074: O bean gerenciado denominado ‘sessionBean’ já foi registrado. Substituindo o tipo de classe do bean gerenciado br.com.algaworks.managedbeans.SessionBean por br.com.algaworks.managedbeans.SessionBean.
nov. 27, 2020 11:46:45 AM com.sun.faces.mgbean.BeanManager addBean
WARNING: JSF1074: O bean gerenciado denominado ‘codastroTorcedorBean’ já foi registrado. Substituindo o tipo de classe do bean gerenciado br.com.algaworks.managedbeans.CodastroTorcedorBean por br.com.algaworks.managedbeans.CodastroTorcedorBean.
nov. 27, 2020 11:46:45 AM com.sun.faces.config.ConfigureListener$WebConfigResourceMonitor$Monitor
INFO: Monitoring file:/C:/Users/Notebook-Valdecir/WorkSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Projeto-Livro-JSF-Primefaces-CDI/WEB-INF/faces-config.xml for modifications
nov. 27, 2020 11:46:45 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-nio-8080”]
nov. 27, 2020 11:46:45 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in [4784] milliseconds
nov. 27, 2020 11:47:40 AM com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{cadastroDeUsuarioBean.Cadastrar}: java.lang.NoClassDefFoundError: javax/persistence/Persistence
javax.faces.FacesException: #{cadastroDeUsuarioBean.Cadastrar}: java.lang.NoClassDefFoundError: javax/persistence/Persistence
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: javax/persistence/Persistence
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
… 29 more
Caused by: java.lang.NoClassDefFoundError: javax/persistence/Persistence
at br.com.algaworks.hibernate.FabricaDeEntityManagers.(FabricaDeEntityManagers.java:11)
at br.com.algaworks.controllers.FlowController.(FlowController.java:10)
at br.com.algaworks.managedbeans.CadastroDeUsuarioBean.Cadastrar(CadastroDeUsuarioBean.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
… 30 more
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
… 41 more

nov. 27, 2020 11:47:40 AM com.sun.faces.context.ExceptionHandlerImpl log
1100: JSF1073: javax.faces.FacesException obtido durante o processamento de INVOKE_APPLICATION 5: UIComponent-ClientId=, Message=#{cadastroDeUsuarioBean.Cadastrar}: java.lang.NoClassDefFoundError: javax/persistence/Persistence
nov. 27, 2020 11:47:40 AM com.sun.faces.context.ExceptionHandlerImpl log
1100: #{cadastroDeUsuarioBean.Cadastrar}: java.lang.NoClassDefFoundError: javax/persistence/Persistence
javax.faces.FacesException: #{cadastroDeUsuarioBean.Cadastrar}: java.lang.NoClassDefFoundError: javax/persistence/Persistence
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:89)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: javax.faces.FacesException: #{cadastroDeUsuarioBean.Cadastrar}: java.lang.NoClassDefFoundError: javax/persistence/Persistence
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
… 25 more
Caused by: javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: javax/persistence/Persistence
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
… 29 more
Caused by: java.lang.NoClassDefFoundError: javax/persistence/Persistence
at br.com.algaworks.hibernate.FabricaDeEntityManagers.(FabricaDeEntityManagers.java:11)
at br.com.algaworks.controllers.FlowController.(FlowController.java:10)
at br.com.algaworks.managedbeans.CadastroDeUsuarioBean.Cadastrar(CadastroDeUsuarioBean.java:22)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
… 30 more
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
… 41 more

Minha JSF:

<?xml version="1.0" encoding="UTF-8"?> Cadastro de Usuarios

Cadastro de Usuarios



Entre com as informações solicitadas a baixo

<h:form>
	<h:panelGrid columns="2">
		<h:outputText value="Primeiro nome: " />
		<h:inputText value="#{cadastroDeUsuarioBean.usuario.nome}" />

		<h:outputText value="Idade: " />
		<h:inputText value="#{cadastroDeUsuarioBean.usuario.idade}" />

		<h:outputText value="Sexo: " />
		<h:selectOneMenu value="#{cadastroDeUsuarioBean.usuario.sexo}">
			<f:selectItem itemValue="MASCULINO" />
			<f:selectItem itemValue="FEMININO" />
		</h:selectOneMenu>

		<h:outputText value="permissão: " />
		<h:selectOneMenu value="#{cadastroDeUsuarioBean.usuario.permissao}">
			<f:selectItem itemValue="ADMINISTRADOR" />
			<f:selectItem itemValue="USUARIO" />
			<f:selectItem itemValue="TESTER" />
		</h:selectOneMenu>

		<h:outputLabel value="O usuario esta habilitado S/N?" for="marked" />
		<h:selectBooleanCheckbox id="marked"
			value="#{cadastroDeUsuarioBean.usuario.habilitacao}" />

		<h:outputText value="Login " />
		<h:inputText value="#{cadastroDeUsuarioBean.usuario.login}" />

		<h:outputText value="Senha " />
		<h:inputSecret value="#{cadastroDeUsuarioBean.usuario.senha}" />

		<h:commandButton value="Cadastrar" action="#{cadastroDeUsuarioBean.Cadastrar}" />
		<h:commandButton value="Mostra" action="#{cadastroDeUsuarioBean.mostraCampos}" />
	</h:panelGrid>
</h:form>

</h:body>

MEU MANAGEDBEAN

package br.com.algaworks.managedbeans;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import br.com.algaworks.controllers.FlowController;
import br.com.algaworks.enums.Permissao;
import br.com.algaworks.enums.Sexo;
import br.com.algaworks.enums.Tipo;
import br.com.algaworks.model.Endereco;
import br.com.algaworks.model.Telefone;
import br.com.algaworks.model.Usuario;

@ManagedBean
@SessionScoped
public class CadastroDeUsuarioBean implements Serializable {
private static final long serialVersionUID = 1L;
private Usuario usuario = new Usuario();

public String Cadastrar() {
	FlowController controller = new FlowController();
	
	usuario.setNome("Controller");
	usuario.setIdade(27);
	usuario.setSexo(Sexo.MASCULINO);
	usuario.setPermissao(Permissao.ADMINISTRADOR);
	usuario.setHabilitacao(true);
	usuario.setLogin("valdecirj10");
	usuario.setSenha("123");
	
	controller.creat(usuario);
	return "";
}
public void mostraCampos() {
	System.out.println(usuario);
	
}
public void cadastroDeTelefone() {
	Telefone telefone = new Telefone();
	telefone.setDdd("11");
	telefone.setNumero("949340360");
	telefone.setTipo(Enum.valueOf(Tipo.class, "CELULAR"));
	
	FlowController controller = new FlowController();
	controller.creat(telefone);
}

public void cadastroDeEndereco() {
	
	
	Endereco endereco = new Endereco();
	endereco.setBairro("Jardim da Luz");
	endereco.setCidade("Embu");
	endereco.setEstado("São Paulo");
	endereco.setLogradouro("Rua: tão tão distante, n° 357");
	
	FlowController controller = new FlowController();
	controller.creat(endereco);
}

public Usuario getUsuario() {
	return usuario;
}

public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}

}