小编eoi*_*Dub的帖子

Java程序在构建时运行但不在胖罐中运行

我有一个使用Jasper Reports API生成PDF的java应用程序.它构建正常,但我不得不通过Netbeans/iReport插件添加一些字体,以便在导出PDF时显示它们.在清洁和建立它很好,一切正常.

但是当我构建一个胖jar(通过build.xml中的几个package-for-store行)时,报告将无法运行.通过终端运行,我收到此错误(抱歉文本墙):

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
    at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:124)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:89)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:104)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:62)
    at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:179)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:108)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:668)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:649)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:971)
    at ie.orderofmalta.OMFinancialsForm.yTDReportBtnActionPerformed(OMFinancialsForm.java:283)
    at ie.orderofmalta.OMFinancialsForm.access$700(OMFinancialsForm.java:30)
    at ie.orderofmalta.OMFinancialsForm$8.actionPerformed(OMFinancialsForm.java:163)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at …
Run Code Online (Sandbox Code Playgroud)

java jar jasper-reports

4
推荐指数
1
解决办法
1826
查看次数

如何设置报表中图片的相对路径?

所以我有一个显示 jasper 报告的 java 应用程序。我使用Netbeans 的iReport插件在报告中放置了一张图像。在我当前的机器上一切都显示正常,但是当我尝试在另一台机器上运行编译后的 jar 时,报告将无法加载。

从Windows控制台来看,我认为这是因为图像的路径是绝对的,即引用开发机器硬盘上的特定文件夹。我需要使其与 jar 文件相关。我已将图像放入包中并确认它位于编译后的 jar 内。但是当我将iReport中的“图像表达式”值更改为“/reports/Logo.jpg”(其中 /reports 是包)并运行应用程序时,我得到

EXCEPTION: Byte data not found at : /reports/Logo.jpgnet.sf.jasperreports.engine.JRException: Byte data not found at : reports/Logo.jpg
Run Code Online (Sandbox Code Playgroud)

有什么想法要做什么吗?我很困惑,非常感谢任何帮助!

更新:明白了。必须在报表中创建一个参数并从图像表达式中调用该参数。然后我在Java代码中创建了HashMap和InputStream ,并将输入流放入哈希映射中!这么简单的事情却需要这么多代码!

Java代码

        //to get images to display in report, pass their relative path as input stream and add to HashMap
        //there must be one stream and one HashMap per image
        InputStream imgInputStream = this.getClass().getResourceAsStream("/reports/omacLogo.jpg");
        InputStream imgInputStream2 = this.getClass().getResourceAsStream("/reports/omacLogo.jpg");
        parameters.put("omacLogo", imgInputStream);
        parameters2.put("omacLogo", …
Run Code Online (Sandbox Code Playgroud)

java jasper-reports

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

jasper-reports ×2

java ×2

jar ×1