Bom dia, criei um relatório em jasper, gerei .jar da aplicação para rodar fora do eclipse, coloquei o caminho correto com getabsolutPath, pega normal, ao executar pelo eclipse, funcionar, se eu executar fora funciona somente se o caminho de criação do jasper estiver ok. Não deveria funcionar pegando o diretório padrão?
Fonte:
public void negAtraso() throws IOException, JRException {
BusinessDAODB businessDAODB = new BusinessDAODB();
arquivo = new File("negAtraso.jasper");
String caminho = arquivo.getAbsolutePath();
System.out.println(caminho);
System.out.println(arquivo.getAbsolutePath());
List<BusinessPojo> negocios;
negocios = businessDAODB.negAtraso();
if (negocios.size() > 0) {
JasperReport relatorio = (JasperReport) JRLoader.loadObjectFromFile(caminho);
JasperPrint print = JasperFillManager.fillReport(relatorio, null, new JRBeanCollectionDataSource(negocios));
JasperViewer.viewReport(print, false);
}else{
notifier.notify(new Notification("Erro", "Não há dados a serem gerados", Notification.ERROR_ICON));
}
}
Erro gerado ao executar mesmo colocando o arquivo(Jasper gerado) junto com o .jar
Caused by: java.lang.IllegalArgumentException: name
at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:693)
at sun.misc.URLClassPath.findResource(URLClassPath.java:215)
at java.net.URLClassLoader$2.run(URLClassLoader.java:569)
at java.net.URLClassLoader$2.run(URLClassLoader.java:567)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findResource(URLClassLoader.java:566)
at java.lang.ClassLoader.getResource(ClassLoader.java:1096)
at net.sf.jasperreports.engine.util.JRResourcesUtil.findClassLoaderResou
rce(JRResourcesUtil.java:569)
at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(Def
aultRepositoryService.java:110)
at net.sf.jasperreports.repo.InputStreamPersistenceService.load(InputStr
eamPersistenceService.java:47)
at net.sf.jasperreports.repo.DefaultRepositoryService.getResource(Defaul
tRepositoryService.java:159)
at net.sf.jasperreports.repo.RepositoryUtil.findInputStream(RepositoryUt
il.java:190)
at net.sf.jasperreports.repo.RepositoryUtil.getBytesFromLocation(Reposit
oryUtil.java:206)
at net.sf.jasperreports.engine.RenderableUtil.getRenderable(RenderableUt
il.java:122)
at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImag
e.java:584)
at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.jav
a:520)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFi
llElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:
454)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVertica
lFiller.java:318)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRV
erticalFiller.java:254)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVertic
alFiller.java:122)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:
551)
at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFill
er.java:411)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:122)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.
java:667)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa
nager.java:983)
at br.ind.risc.follow.controller.MainController.negAtraso(MainController
.java:144)
... 53 more