RESOLVI USANDO A VERSÃO 3.7 DO IREPORT, ESTAVA USANDO A VERSÃO 4.6
ESSA VERSÃO 4.6 ESTAVA GERANDO UM COMPONENTE "UUID" DENTRO DO XML E NÃO DEIXAVA O PROJETO SER COMPILADO.
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
Bem galera, seguindo alguns tutoriais tentei criar um relatorio e exibi-lo pelo java, mas estou tendo o problema dele só exibir os relatorio em branco .. vou postar o código aqui ..
publicclassChamaReport{privatestaticConnectiongetConnection()throwsClassNotFoundException,SQLException{Stringdriver="com.mysql.jdbc.Driver";Stringurl="jdbc:mysql://localhost:3306/meuprojeto";Stringuser="root";Stringpassword="teste";Class.forName(driver);Connectioncon=DriverManager.getConnection(url,user,password);returncon;}publicstaticvoidmain(String[]args)throwsJRException,Exception{newChamaReport().geraRelatorio();}@SuppressWarnings("unchecked")privatevoidgeraRelatorio()throwsJRException,SQLException,ClassNotFoundException{Connectionconn=ChamaReport.getConnection();Statementstat=conn.createStatement();StringSQL="Select * From tb_Produtos";//ResultSetrs=stat.executeQuery(SQL);HashMapmap=newHashMap();while(rs.next()){map.put("cod",Integer.valueOf(rs.getInt("cod")));map.put("descricao",rs.getString("descricao"));map.put("preco",Double.valueOf(rs.getDouble("preco")));System.out.println("Cod:"+map.get("cod"));System.out.println("Des:"+map.get("descricao"));System.out.println("Pre:"+map.get("preco"));}JRResultSetDataSourcejrRS=newJRResultSetDataSource(rs);JasperReportreport=(JasperReport)JRLoader.loadObject("MeuProjeto.jasper");JasperPrintrelatorio=JasperFillManager.fillReport(report,map,jrRS);JasperViewerviewer=newJasperViewer(relatorio,false);viewer.setVisible(true);viewer.show();}}
Então, se eu rodar direto no IReport roda de boa …
D
Diego_Adriano
A disfarça … e já havia percebido esse erro, eu havia criado o campo com o nome errado, mas já arrumei no relatório, porém ele continua dando esse erro quando chamo pela aplicação …
D
Diego_Adriano
Engraçado, agora esta dando NullPointerException, a problema era que eu havia mudado o nome do filed porém na consulta dentro do XML do IReport estava com o campo antigo …:
Exception in thread "main" java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillFrame.evaluate(JRFillFrame.java:147)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:326)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:262)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at novoteste.ChamaReport.geraRelatorio(ChamaReport.java:57)
at novoteste.ChamaReport.main(ChamaReport.java:32)
R
RiQuInHo_
voce ja debugou e viu se esta vindo os valores respectivo de cada um?
D
Diego_Adriano
Não, mas só uma dúvida, para que serve o Parametro Map ?
B
blackout
Eu fiquei meio confuso, criando o datasource no iReport e rodando o relatório por lá, funcionou na boa?
Como já disse o RiQuInHo_$_$, você já debugou o código pra ver se todos os valores estão vindo corretamente?
Outra coisa, passa o jrRs e não a conexão. Pois se tua intenção é rodar o relatório a partir da aplicação com os dados prontos, você tem que mandar o jrRs pois ele já tem o resultSet dentro dele.
Pra você não ter que passar parametro por parametro para o seu relatório. Dessa forma o jasper pode pegar o key do seu map e “linkar” com o nome do campo que você definiu no jasper.
D
Diego_Adriano
Ainda não debuguei …
Então, se eu passar o Map quer dizer que eu não preciso passar o jrRs pois os dados já estarão no Map certo ?
B
blackout
Diego Adriano:
Ainda não debuguei …
Então, se eu passar o Map quer dizer que eu não preciso passar o jrRs pois os dados já estarão no Map certo ?
Faz o teste, em teoria, funciona. Não tenho como testar aqui.
R
RiQuInHo_
Diego Adriano:
Ainda não debuguei …
Então, se eu passar o Map quer dizer que eu não preciso passar o jrRs pois os dados já estarão no Map certo ?
1º voce criou algum parametro no relatorio para ficar usando esse cara?