我遇到了一个可怕的问题,最糟糕的是我在网上几乎找不到任何关于它的信息!我正在使用 jaspersoft studio 用 Java 编写报告。我已经制作了模板(它有两个参数)并按照下一页上的指南进行操作。
好的,我的代码如下:
public class Reportes{
private Administrador admin;
public Reportes() throws ClassNotFoundException, SQLException{
admin = new Administrador();
}
public JRViewer obtenerPaciente(String ced) throws JRException{
HashMap parameters = new HashMap();
InputStream is = getClass().getResourceAsStream("assets/PerfilPaciente.jrxml");
JRDesignQuery design = new JRDesignQuery();
design.setText("SELECT * FROM Pacientes");
JasperDesign jd = JRXmlLoader.load(is);
jd.setQuery(design);
parameters.put("Imagen", ClassLoader.getSystemResource("assets/perfil-azul.png").getPath());
parameters.put("Cedula",ced);
JasperReport report = JasperCompileManager.compileReport(jd);
JasperPrint jp = JasperFillManager.fillReport(report, parameters, admin.obtenerConexion());
JRViewer jrv = new JRViewer(jp);
return jrv;
}
}
当我在我的 JDialog 中调用该函数时,它会抛出以下错误:
net.sf.jasperreports.engine.JRException:在 net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:251) 在 net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML 的 java.net.MalformedURLException (JRXmlLoader.java:230) 在 net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:218)
我得到以下代码行:
InputStream 是 = getClass().getResourceAsStream("assets/PatientProfile.jrxml");
我试图将它放置在“/PerfilPaciente.jrml”、“PerfilPaciente.jrxml”中,什么也没有。也不是因为它在项目文件夹中。
我怎么能解决这个问题?
PS:我把我的资源都放在我创建的一个名为“assets”的项目文件夹中,从那里我的java程序的一些图像也出来了,它没有给我像这个jrxml文件这样的问题。
现在有了你上传的内容,我更好地理解了......看有两种方法可以做到这一点,一种是将 jrxml 复制到 jar 中,但为此它必须位于 src/assets/PatientProfile.jrxml 文件夹中,并使用你拥有的代码它会起作用的。
因为你想要做的是资源在罐子里。
或者您也可以将其作为资源而不是像这样加载它:
按如下方式加载它,请记住,当您上传应用程序时,将有一个文件夹,您的程序称为 assets 执行:
记得添加 FileInputStream 导入。
作为文化数据,您使用的是 ant。