1
Hello I’m getting the following error message when running the project:
java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.sun.faces.util.Util.loadClass(Util.java:297) at com.sun.faces.config.processor.ApplicationConfigProcessor.addSystemEventListener(ApplicationConfigProcessor.java:943) at com.sun.faces.config.processor.ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:352) at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:155) at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:138) at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:155) at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:240) at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:443) at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:229) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5221) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: javax.enterprise.context.spi.Contextual at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1293) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1145) ... 20 more
Classes I am using: View
package br.com.valueprojects.view;
import java.io.Serializable;
import java.util.Collection;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.RowEditEvent;
import br.com.valueprojects.business.JogadorBusiness;
import br.com.valueprojects.business.JogadorBusiness.MensagemEnum;
import br.com.valueprojects.model.Jogador;
import br.com.valueprojects.util.JSFUtil;
@ManagedBean
@ViewScoped
public class JogadorMB implements Serializable {
private static final long serialVersionUID = 1L;
private Jogador jogador = new Jogador();
JogadorBusiness jb = new JogadorBusiness();
Collection<Jogador> jogadores;
public Jogador getJogador(){
return jogador;
}
public void setJogador(Jogador jogador){
this.jogador = jogador;
}
public void salvar(){
if (jb.salvarJogador(jogador)==MensagemEnum.SUCESSO) {
System.out.println("Sucesso!");
jogador = new Jogador();
} else {
System.out.println("Erro!");
}
JSFUtil.addMessage("msg", jb.getMsg());
}
public Collection<Jogador> getJogadores(){
if(jogadores == null)
jogadores = jb.getAllJogadores();
return jogadores;
}
public void excluir(Jogador jogador){
if (jb.removerJogador(jogador)==MensagemEnum.SUCESSO) {
System.out.println("Sucesso!");
jogador = new Jogador();
} else {
System.out.println("Erro!");
}
JSFUtil.addMessage("msg", jb.getMsg());
}
public void atualizar(Jogador jogador){
if (jb.atualizarJogador(jogador)==MensagemEnum.SUCESSO) {
System.out.println("Sucesso!");
jogador = new Jogador();
} else {
System.out.println("Erro!");
}
JSFUtil.addMessage("msg", jb.getMsg());
}
public void onRowEdit(RowEditEvent event){
Jogador j = (Jogador) event.getObject();
System.out.println(j.getCod());
System.out.println(j.getNome());
atualizar((Jogador)event.getObject());
}
}
Useful
package br.com.valueprojects.util;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
public abstract class JSFUtil {
public static String getMsg(String id)
{
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.getViewRoot().setLocale(new Locale("pt","BR"));
String msg = "";
Locale locale = facesContext.getViewRoot().getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("application", locale);
try {
msg = bundle.getString(id);
} catch (Exception e) {
}
return msg;
}
public static void addMessage(String idTitulo, String idMensagem) {
String titulo = getMsg(idTitulo);
String mensagem = getMsg(idMensagem);
System.out.println(titulo);
System.out.println(mensagem);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(titulo,mensagem));
}
}
Model
package br.com.valueprojects.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Usuario {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int cod;
private String nome;
private int rg;
private String bio;
public int getCod() {
return cod;
}
public void setCod(int cod) {
this.cod = cod;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getRg() {
return rg;
}
public void setRg(int rg) {
this.rg = rg;
}
public String getBio(){
return bio;
}
public void setBio(String bio){
this.bio = bio;
}
@Override
public String toString(){
return "Usuário [Cod.: "+cod+" Nome: "+nome+" RG: "+rg+" Bio.: "+bio+"]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + cod;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Usuario other = (Usuario) obj;
if (cod != other.cod)
return false;
return true;
}
}
import javax.persistence.Entity;
@Entity
public class Jogador extends Usuario {
private String posicao;
private int numCamisa;
public String getPosicao() {
return posicao;
}
public void setPosicao(String posicao) {
this.posicao = posicao;
}
public int getNumCamisa() {
return numCamisa;
}
public void setNumCamisa(int numCamisa) {
this.numCamisa = numCamisa;
}
@Override
public String toString(){
return "Jogador: "+super.toString()+" [Posicao: "+posicao+" Num. Camisa: "+numCamisa+"]";
}
}
Business
package br.com.valueprojects.business;
import java.util.List;
import br.com.valueprojects.model.Jogador;
import br.com.valueprojects.services.JogadorService;
public class JogadorBusiness {
public enum MensagemEnum{SUCESSO, ERROR};
private String msg;
public MensagemEnum salvarJogador(Jogador jogador){
MensagemEnum retorno;
if (jogador == null) {
msg = "br.com.valueprojects.business.jogadorNullError";
retorno = MensagemEnum.ERROR;
}else {
if((jogador.getNome().equals(""))&&(jogador.getRg()==0)&&(jogador.getPosicao().equals(""))){
msg = "br.com.valueprojects.business.jogadorIncomplete";
retorno = MensagemEnum.ERROR;
}
else{
JogadorService jogadorService = new JogadorService();
if (jogadorService.save(jogador)) {
retorno = MensagemEnum.SUCESSO;
msg = "br.com.valueprojects.business.jogadorSucesso";
} else {
retorno = MensagemEnum.ERROR;
msg = "br.com.valueprojects.business.erroBanco";
}
}
}
return retorno;
}
public MensagemEnum removerJogador(Jogador jogador){
MensagemEnum retorno;
if (jogador == null) {
msg = "br.com.valueprojects.business.jogadorNullError";
retorno = MensagemEnum.ERROR;
} else {
JogadorService jogadorService = new JogadorService();
if (jogadorService.delete(jogador)) {
retorno = MensagemEnum.SUCESSO;
msg = "br.com.valueprojects.business.jogadorExcluirSucesso";
} else {
retorno = MensagemEnum.ERROR;
msg = "br.com.valueprojects.business.erroBanco";
}
}
return retorno;
}
public MensagemEnum atualizarJogador(Jogador jogador){
MensagemEnum retorno;
if (jogador == null) {
msg = "br.com.valueprojects.business.jogadorNullError";
retorno = MensagemEnum.ERROR;
}else {
if((jogador.getNome().equals(""))&&(jogador.getRg()==0)&&(jogador.getPosicao().equals(""))){
msg = "br.com.valueprojects.business.jogadorIncomplete";
retorno = MensagemEnum.ERROR;
}
else{
JogadorService jogadorService = new JogadorService();
if (jogadorService.update(jogador)) {
retorno = MensagemEnum.SUCESSO;
msg = "br.com.valueprojects.business.jogadorAtualizarSucesso";
} else {
retorno = MensagemEnum.ERROR;
msg = "br.com.valueprojects.business.erroBanco";
}
}
}
return retorno;
}
public String getMsg(){
return msg;
}
public void setMsg(String msg){
this.msg = msg;
}
public List<Jogador> getAllJogadores(){
JogadorService jogadorService = new JogadorService();
return jogadorService.getAllJogadores();
}
}
Persistence
package br.com.valueprojects.persistence;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class MyEntityManager {
private EntityManager entityManager;
private static EntityManagerFactory factory;
public MyEntityManager(){
if(factory ==null)
factory = Persistence.createEntityManagerFactory("ProjetoES");
}
public void beginTransaction(){
entityManager.getTransaction().begin();
}
public void commit(){
entityManager.getTransaction().commit();
}
public void close(){
entityManager.close();
}
public void closeFactory()
{
factory.close();
}
public void rollBack(){
entityManager.getTransaction().rollback();
}
public EntityManager getEntityManager(){
this.entityManager = factory.createEntityManager();
return entityManager;
}
public <T> T find(Class<T> entityClass, Object primaryKey)
{
return entityManager.find(entityClass, primaryKey);
}
}
package br.com.valueprojects.persistence;
import java.util.List;
import javax.persistence.EntityManager;
@SuppressWarnings("unchecked")
public class GenericDAO <PK, T>{
private EntityManager entityManager;
public GenericDAO(EntityManager entityManager){
this.entityManager = entityManager;
}
public T getById(PK pk, Class<T> classe){
return (T) entityManager.find(classe, pk);
}
public void save(T entity){
entityManager.persist(entity);
}
public void update(T entity){
entityManager.merge(entity);
}
public void delete(T entity){
entityManager.remove(entity);
}
public List<T> findAll(Class <T> classe) {
return entityManager.createQuery("Select obj FROM " + classe.getSimpleName() + " as obj").getResultList();
}
@SuppressWarnings("hiding")
public <T> T find(Class<T> entityClass, Object primaryKey)
{
return entityManager.find(entityClass, primaryKey);
}
}
package br.com.valueprojects.persistence;
import javax.persistence.EntityManager;
import br.com.valueprojects.model.Jogador;
public class JogadorDAO extends GenericDAO<Integer, Jogador> {
public JogadorDAO(EntityManager entityManager){
super(entityManager);
}
}
Service
package br.com.valueprojects.services;
import java.util.List;
import br.com.valueprojects.model.Jogador;
import br.com.valueprojects.persistence.JogadorDAO;
import br.com.valueprojects.persistence.MyEntityManager;
public class JogadorService {
private JogadorDAO jogadorDAO;
private MyEntityManager myEntityManager;
public JogadorService(){
this.myEntityManager = new MyEntityManager();
jogadorDAO = new JogadorDAO(myEntityManager.getEntityManager());
}
public boolean save(Jogador jogador){
boolean retorno = false;
try {
myEntityManager.beginTransaction();
jogadorDAO.save(jogador);
myEntityManager.commit();
retorno = true;
} catch (Exception e) {
e.printStackTrace();
myEntityManager.rollBack();
}finally {
myEntityManager.close();
}
return retorno;
}
public boolean delete(Jogador jogador){
boolean retorno = false;
try {
myEntityManager.beginTransaction();
Jogador j = jogadorDAO.find(Jogador.class, jogador.getCod());
jogadorDAO.delete(j);
myEntityManager.commit();
retorno = true;
} catch (Exception e) {
e.printStackTrace();
myEntityManager.rollBack();
}finally {
myEntityManager.close();
}
return retorno;
}
public boolean update(Jogador jogador){
boolean retorno = false;
try {
myEntityManager.beginTransaction();
jogadorDAO.update(jogador);
myEntityManager.commit();
retorno = true;
} catch (Exception e) {
e.printStackTrace();
myEntityManager.rollBack();
}finally {
myEntityManager.close();
}
return retorno;
}
public List<Jogador> getAllJogadores(){
return jogadorDAO.findAll(Jogador.class);
}
public Jogador findJogador(Jogador jogador){
return jogadorDAO.find(Jogador.class, jogador.getCod());
}
}
HTML
<ui:composition template="templateMenu.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:tm="http://java.sun.com/jsf/composite/terminal/1_0/components">
<ui:define name="title">
<h:outputText value="#{msg['pages.jogadorGerenciar.jogador.title']}" />
</ui:define>
<ui:define name="principal">
<h:form id="jogadorForm">
<p:growl id="msg" showDetail="true" life="3000" />
<p:panelGrid columns="2">
<f:facet name="header">
<p:outputLabel value="#{msg['pages.jogadorGerenciar.jogador.title']}" />
</f:facet>
<p:outputLabel value="#{msg['pages.jogadorGerenciar.jogador.nome']}" />
<p:inputText value="#{jogadorMB.jogador.nome}" id="nomeJogador" />
<p:commandButton actionListener="#{jogadorMB.salvar}" value="#{msg['pages.jogadorGerenciar.jogador.btnSalvar']}" update="msg, jogadorForm, :table:tableJogadores"></p:commandButton>
<p:commandButton value="#{msg['pages.jogadorGerenciar.jogador.btnFechar']}" action="inicio"></p:commandButton>
</p:panelGrid>
</h:form>
<h:form id="table" >
<p:dataTable id="tableJogadores" value="#{jogadorMB.jogadores}" var="jogador" editable="true" style="margin-bottom:20px">
<p:ajax event="rowEdit" listener="#{jogadorMB.onRowEdit}" />
<p:ajax event="rowEditCancel" />
<p:column headerText="#{msg['pages.jogadorGerenciar.jogador.cod']}" style="width:100px">
<h:outputLabel value="#{jogador.cod}" />
</p:column>
<p:column headerText="#{msg['pages.jogadorGerenciar.jogador.nome']}">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{jogador.nome}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput" value="#{jogador.nome}" style="width:96%" /></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="#{msg['pages.jogadorGerenciar.jogador.btnExcluir']}" style="width:70px">
<p:commandButton actionListener="#{jogadorMB.excluir(jogador)}" id="excluir" update=":jogadorForm:msg, tableJogadores" icon="ui-icon-trash" title="Excluir"></p:commandButton>
</p:column>
<p:column style="width:32px">
<p:rowEditor />
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
I’ve searched every corner of Google, but I haven’t found a solution so far. Can someone help me?
Ta missing library.
– DiegoAugusto
Post the code of your class for us to analyze. : D
– Danilo Pádua
I updated the question with the classes I’m using.
– Alexandre Cardoso