Problemas JSF com JFreeChar

5 respostas
EuclidesFilizola

Bom dia pessoal. Estou apanhando em algo que não consigo desvendar no momento.

eu tenho o seguinte método DAO.

public void gerarGrafico(List<String> Coordenadoria,String material,String arquivo,String dataInicial, String dataFinal) {
			/*
			 * Calculo do somatorio dos valores dos pedidos entregues
			 */
			
		 	try {
			
			double soma = 0;
				for(int i=0;i<Coordenadoria.size();i++){
					if (i%2 != 0){
					soma = soma + Double.parseDouble(Coordenadoria.get(i));
					}
				}

	        DefaultPieDataset pieDataset = new DefaultPieDataset();
	        
	    	double porcentagem = 0;
	    	double somatorio = 0; 
	    	
	    	List><String> listaDaSomaPorcentagem = new ArrayList<String>(); // arraylist da soma de porcentagem. %.
	     
	        for (int i=0;i<Coordenadoria.size();i++){
	        	
	        	if (i%2 != 0) {
	        		
	       porcentagem = Double.parseDouble(Coordenadoria.get(i).toString());
		  
	       somatorio =  ((porcentagem/soma)*(100));

	       DecimalFormat df = new DecimalFormat("0.##"); 		// Formantando o número para 2 casas decimais após a vírgula
	       String dx = df.format(somatorio);
	       dx = dx.replace(',', '.');  
	       
	      listaDaSomaPorcentagem.add(dx);
	        	}
	        }   
	         
	 int contador = 0;
	     	 
	        for (int j=0;j<Coordenadoria.size();j++){
	        	
	        	if (j%2 == 0){
	        		
	     		System.out.println(Coordenadoria.get(j).toString() + " porcentagem: "+listaDaSomaPorcentagem.get(contador)+ " %");
	        		
	        	pieDataset.setValue(Coordenadoria.get(j)+" "+ listaDaSomaPorcentagem.get(contador)+"%",Double.parseDouble((listaDaSomaPorcentagem.get(contador))));
	        	
	        	    contador++;
	        	    
	        	}
	        	
	        }
	        
	        JFreeChart chart = ChartFactory.createPieChart("MATERIAL: " + material + "  \n PERÍODO : "+dataInicial+" à "+dataFinal+" ",pieDataset, true, true, false);
	        	
	        File diretorio_c = new File("C:\\");
	        
	        File[] files = diretorio_c.listFiles();  
			  
	        String complemento = "";
	        
			  for (int i=0;i<files.length;i++){
				  
				  File arquivos = files[i];  
		            String nomeDoArquivo = arquivos.getName(); 
		            
		            if (nomeDoArquivo.equalsIgnoreCase(arquivo+".jpg")){
		            	
		            	contador++;
		            	
		            	complemento = ""+contador;
		            	
		           
							ChartUtilities.saveChartAsJPEG(new File("C:\\" + arquivo + complemento + ".jpg"), chart, 1000, 800);
							

			    			ChartUtilities.saveChartAsJPEG(new File("C:\\"+arquivo+".jpg"), chart, 1000, 800);
							
		            }
			  }	
						}catch (IOException e) {
						
							e.printStackTrace();
				
						}
	}

…e no meu managedbean … da erro quando eu instancio a classe

public void GerarGrafico(){
				
		try {
		
			
		coordenadoria = pedidosDAO.listarMateriaisEntregue(pedido.getDataInicial(),pedido.getDataFinal(),material.getNomeMaterial());
	
		
		pedidosDAO.gerarGrafico(coordenadoria, material.getNomeMaterial(), this.getNomeArquivo(), pedido.getDataInicial(),pedido.getDataFinal());
	
		} catch (ClassNotFoundException e) {
		
			e.printStackTrace();
		} catch (SQLException e) {
		
			e.printStackTrace();
		}

		
	}

e o erro que da é este:

SEVERE: Exception in the filter chain
javax.servlet.ServletException: Servlet execution threw an exception
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError: org/jfree/data/general/PieDataset
	at br.gov.ce.srh.grafico.bean.ProcurarRelatorio.><init>(ProcurarRelatorio.java:28)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:185)
	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105)
	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:368)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:230)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:107)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
	at javax.faces.component.UISelectItems.getValue(UISelectItems.java:141)
	at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:283)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:783)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:578)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	... 20 more
Caused by: java.lang.ClassNotFoundException: org.jfree.data.general.PieDataset
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 56 more
30/12/2009 09:17:14 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.ClassNotFoundException: org.jfree.data.general.PieDataset
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	at br.gov.ce.srh.grafico.bean.ProcurarRelatorio.<init>(ProcurarRelatorio.java:28)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:185)
	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105)
	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:368)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:230)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:107)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
	at javax.faces.component.UISelectItems.getValue(UISelectItems.java:141)
	at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:283)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:783)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:578)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527)
	at java.lang.Thread.run(Thread.java:619)

e estou carregando estas libs. da jfreechar-1.0.13

libs:

gnujaxp
iText-2.1.5
jcommon-1.0.16
jfreechart-1.0.13
jfreechart-1.0.13-experimental
jfreechart-1.0.13-swt
junit
servlet
swtgraphics2d

Alguém saberia me ajudar… ???

5 Respostas

EuclidesFilizola

Gostaria apenas de explica-lo que, eu construi uma classe única e funcionou beleza pura. Porém, quando tentei passar para padrão mvc .... ae deu pro.

aqui está minha classe teste que funcionou:

public class Graficos {
	
	
	 public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException, IOException {
	   
		 
		 String dataInicial = "2008/01/01 00:00:0000";
		 
		 String dataFinal = "2008/01/30 00:00:0000";
		 
		 String material = "papel a4";
		 
		 
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
			
		Connection conexao = null;
		List<String> Coordenadoria = new ArrayList<String>();
					
		conexao = DriverManager.getConnection("jdbc:odbc:MATERIAL","","");
		Statement stmt = conexao.createStatement(); 
		String select = "SELECT Pedidos.[Coordenadoria/Nucleo], [Cadastro de Materiais].[Nome do Material], SUM([Itens do pedido].ENTREGUE) AS ENTREGUE FROM Pedidos, [Cadastro de Materiais],[Itens do pedido]where [Itens do pedido].ENTREGUE <> 0 AND Pedidos.CodPedido = [Itens do pedido].CodPedido  AND [Cadastro de Materiais].CodMat = [Itens do pedido].CodMat   AND Pedidos.[Data do Pedido] BETWEEN #" + dataInicial + "# AND #" + dataFinal + "# AND [Cadastro de Materiais].[Nome do Material] = '" + material + "'  AND Pedidos.[Coordenadoria/Nucleo] IS NOT NULL group by Pedidos.[Coordenadoria/Nucleo], [Cadastro de Materiais].[Nome do Material]";
		String nomeDaCoordendoria = "";
		ResultSet results = stmt.executeQuery(select);
		System.out.println(select);

			while (results.next()){
				nomeDaCoordendoria =  results.getString("Coordenadoria/Nucleo");
				Coordenadoria.add(nomeDaCoordendoria.toUpperCase()); // adiciona todas as coordenadorias encontradas por data.
				Coordenadoria.add(results.getString("ENTREGUE"));
			}
		
			/*
			 * Calculo do somatorio dos valores dos pedidos entregues
			 */
			double soma = 0;
				for(int i=0;i<Coordenadoria.size();i++){
					if (i%2 != 0){
					soma = soma + Double.parseDouble(Coordenadoria.get(i));
					}
				}

	        DefaultPieDataset pieDataset = new DefaultPieDataset();
	        
	    	double porcentagem = 0;
	    	double somatorio = 0; 
	    	
	    	List><String> listaDaSomaPorcentagem = new ArrayList<String>(); // arraylist da soma de porcentagem. %.
	     
	        for (int i=0;i<Coordenadoria.size();i++){
	        	
	        	if (i%2 != 0) {
	        		
	       porcentagem = Double.parseDouble(Coordenadoria.get(i).toString());
		  
	       somatorio =  ((porcentagem/soma)*(100));
	
	       DecimalFormat df = new DecimalFormat("0.##"); 		// Formantando o número para 2 casas decimais após a vírgula
           String dx = df.format(somatorio);
           dx = dx.replace(',', '.');  
           
          listaDaSomaPorcentagem.add(dx);
            	}
	        }   
	         
	 int contador = 0;
	     	 
	        for (int j=0;j<Coordenadoria.size();j++){
	        	
	        	if (j%2 == 0){
	        		
	     		System.out.println(Coordenadoria.get(j).toString() + " porcentagem: "+listaDaSomaPorcentagem.get(contador)+ " %");
	        		
	        	pieDataset.setValue(Coordenadoria.get(j)+" "+ listaDaSomaPorcentagem.get(contador)+"%",Double.parseDouble((listaDaSomaPorcentagem.get(contador))));
	        	
	        	    contador++;
	        	    
	        	}
	        	
	        }
	        
	        JFreeChart chart = ChartFactory.createPieChart("MATERIAL: " + material + "  \n PERÍODO : 01/01/2008 à 30/01/2008",
	                pieDataset, true, true, false);
	        	
						ChartUtilities.saveChartAsJPEG(new File("C:\\teste.jpg"), chart, 1000, 800);
	 
				}
			}
>
Rafael_Carneiro

Ainda está lançando a exceção acima?

EuclidesFilizola

continua na mesma.

Rafael_Carneiro

Você está com problemas no seu classpath: java.lang.ClassNotFoundException: org.jfree.data.general.PieDataset

Verifique se essa classe se encontra em algum jar da sua aplicação e verifique se esse jar está devidamente configurado no classpath.

EuclidesFilizola

Como eu disse anteriormente, eu fiz uma classe de teste, uma única classe na qual eu utilizei todas essas bibliotecas e funcionaram perfeitamente. Porém, quando eu tentei mudar para mvc, separando por beans, daos, etc … não funcionou mais… esse é o problema.

Criado 30 de dezembro de 2009
Ultima resposta 30 de dez. de 2009
Respostas 5
Participantes 2