Jasper report preview在字段中显示数据,但在通过java生成报告时,它打印空值

Jasper report preview在字段中显示数据,但在通过java生成报告时,它打印空值,java,jasper-reports,Java,Jasper Reports,Jasperreport已成功生成(JAsperTest.pdf),但出现以下异常,但未在ID字段中打印任何整数值。它在ID字段中只打印空值。但jasper工具中的预览显示ID字段中的所有整数值,而不是通过java代码生成的报告中的整数值 "PM net.sf.jasperreports.engine.export.PdfGlyphRenderer determinePatchedItext WARNING: Unpatched iText found, cannot use glyph ren

Jasperreport已成功生成(JAsperTest.pdf),但出现以下异常,但未在ID字段中打印任何整数值。它在ID字段中只打印空值。但jasper工具中的预览显示ID字段中的所有整数值,而不是通过java代码生成的报告中的整数值

"PM net.sf.jasperreports.engine.export.PdfGlyphRenderer determinePatchedItext
WARNING: Unpatched iText found, cannot use glyph rendering"
这个问题在其他论坛被问到,但没有找到解决方案。请帮我解决这个问题。我尝试将itext5.5.0jar删除到itext7jar,但结果是错误的

lib文件夹中包含的Jar文件:

JasperTest.java

import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;

    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JREmptyDataSource;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    public class JasperClass {

       public static void main(String[] args) throws JRException, IOException {

            // Compile jrxml file.
           JasperReport jasperReport = JasperCompileManager
                   .compileReport("C:/repo/JasperTest/Jaspertest.jrxml");

           // Parameters for report
           Map<String, Object> parameters = new HashMap<String, Object>();

           // DataSource
           // This is simple example, no database.
           // then using empty datasource.
           JRDataSource dataSource = new JREmptyDataSource();

           JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
                   parameters, dataSource);


           // Make sure the output directory exists.
           File outDir = new File("C:/repo/JasperTest");
           outDir.mkdirs();

           // Export to PDF.
           JasperExportManager.exportReportToPdfFile(jasperPrint,
                   "C:/repo/JasperTest/Jaspertest.pdf");

           System.out.println("Done!");
       }
    }
导入java.io.File;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
导入net.sf.jasperreports.engine.JRDataSource;
导入net.sf.jasperreports.engine.JREmptyDataSource;
导入net.sf.jasperreports.engine.JRException;
导入net.sf.jasperreports.engine.JasperCompileManager;
导入net.sf.jasperreports.engine.jaspeexportmanager;
导入net.sf.jasperreports.engine.JasperFillManager;
导入net.sf.jasperreports.engine.JasperPrint;
导入net.sf.jasperreports.engine.JasperReport;
公共类JasperClass{
公共静态void main(字符串[]args)引发JRException、IOException{
//编译jrxml文件。
JasperReport JasperReport=JasperCompileManager
.compileReport(“C:/repo/JasperTest/JasperTest.jrxml”);
//报告的参数
映射参数=新的HashMap();
//数据源
//这是一个简单的例子,没有数据库。
//然后使用空数据源。
JRDataSource dataSource=新的JREptyDatasource();
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,
参数(数据源);
//确保输出目录存在。
File outDir=新文件(“C:/repo/JasperTest”);
outDir.mkdirs();
//导出为PDF。
JasperExportManager.exportReportToPdfFile(jasperPrint,
“C:/repo/JasperTest/JasperTest.pdf”);
System.out.println(“完成!”);
}
}
JasperTest.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.4.0.final using JasperReports Library version 6.4.1  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Jaspertest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="98c6f0de-1e25-4ff3-b982-cfa45f54b507">
    <property name="com.jaspersoft.studio.data.sql.tables" value="Y2l0eSAsMTUsMTUsMTFlZThiNTgtMzM2OC00ZmQ3LWEzOTYtY2ZhMTM4MzllMjZhOw=="/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Dataadaptertest.xml"/>
    <queryString language="SQL">
        <![CDATA[SELECT ID
FROM city]]>
    </queryString>
    <field name="ID" class="java.lang.Integer"/>
    <group name="ID">
        <groupExpression><![CDATA[$F{ID}]]></groupExpression>
    </group>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="75" splitType="Stretch">
            <staticText>
                <reportElement x="100" y="10" width="100" height="30" uuid="fe0a9fb7-deef-4393-a835-7cf9e41b8bef"/>
                <text><![CDATA[Test Successfull]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="63" splitType="Stretch">
            <staticText>
                <reportElement x="89" y="33" width="100" height="30" uuid="c2a5e228-a3f1-42fc-8064-688191cb7633"/>
                <text><![CDATA[ID]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="46" splitType="Stretch">
            <textField>
                <reportElement x="89" y="10" width="100" height="30" uuid="126f1743-5bae-4e84-8bc6-9b36c2a808cc"/>
                <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

问题已解决。现在我可以在我的报告中看到数据了。正如Alex所说,我连接了SQL。非常感谢。我粘贴下面的代码以供参考。 avaCallJasperReport.java

import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.export.ExporterInput;
import net.sf.jasperreports.export.OutputStreamExporterOutput;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
import net.sf.jasperreports.export.SimplePdfExporterConfiguration;

import conn.ConnectionUtils;

public class avaCallJasperReport {

    public static void main(String[] args) throws JRException,
            ClassNotFoundException, SQLException {

        String reportSrcFile = "C:/repo/JasperTest/Jaspertest.jrxml";

        // First, compile jrxml file.
        JasperReport jasperReport =    JasperCompileManager.compileReport(reportSrcFile);

        Connection conn = ConnectionUtils.getConnection();

        // Parameters for report
        Map<String, Object> parameters = new HashMap<String, Object>();

        JasperPrint print = JasperFillManager.fillReport(jasperReport,
                parameters, conn);

        // Make sure the output directory exists.
        File outDir = new File("C:/repo/JasperTest");
        outDir.mkdirs();

        // PDF Exportor.
        JRPdfExporter exporter = new JRPdfExporter();

        ExporterInput exporterInput = new SimpleExporterInput(print);
        // ExporterInput
        exporter.setExporterInput(exporterInput);

        // ExporterOutput
        OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(
                "C:/repo/JasperTest/FirstJasperReport.pdf");
        // Output
        exporter.setExporterOutput(exporterOutput);

        //
        SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
        exporter.setConfiguration(configuration);
        exporter.exportReport();

        System.out.print("tttt!");
    }
}
Java

package conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLconnUtils {



        public static Connection getMySQLConnection()
                throws ClassNotFoundException, SQLException {
            String hostName = "localhost";
            String dbName = "world";
            String userName = "root";
            String password = "root";
            return getMySQLConnection(hostName, dbName, userName, password);
        }

        public static Connection getMySQLConnection(String hostName, String dbName,
                String userName, String password) throws SQLException,
                ClassNotFoundException {

            Class.forName("com.mysql.jdbc.Driver");

            System.out.println("Get qq ... ");
            String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName;

            Connection conn = DriverManager.getConnection(connectionURL, userName,
                    password);
            return conn;
        }
    }
package conn;

import java.sql.Connection;
import java.sql.SQLException;

public class ConnectionUtils {

    public static Connection getConnection() throws SQLException,
            ClassNotFoundException {

        // Using Oracle
        // You may be replaced by other Database.
        return MySQLconnUtils.getMySQLConnection();
    }

    //
    // Test Connection ...
    //
    public static void main(String[] args) throws SQLException,
            ClassNotFoundException {

        System.out.println("Get connection ... ");

        // Get a Connection object
        Connection conn = ConnectionUtils.getConnection();

        System.out.println("Get connection " + conn);

        System.out.println("Done!");
    }
}

上面的任何更新都会更有帮助。1)你应该将项目库列表发布在文本中,而不是图像中;2) 您的图像是worng-它包含javaflow库(看起来您删除了这个库);3) 这是一个警告,不是错误;4) 您是否尝试以其他输出格式(doc、xls或rtf)导出报告?一切都好吗?;5) 你试过使用不同的字体吗?;6) 什么是jasper工具?Jaspersoft Studio?您正在通过代码传递
jrpemptyDataSource
-您的报告应该在lib文件夹中清空:commons-logging-1.2.JAR commons-beanutils-1.9.3.JAR commons-digester-2.1.JAR commons-collections-3.2.1.JAR groovy-all-1.0-beta-10.JAR itext-2.1.7.JAR itext-pdfa-5.5.0.JAR itextpdf-5.4.JARjasperreports-fonts-6.2.0 mysql-connector-java-5.1.44-bin.jar试用字体:
jasperreports-fonts-4.0.1 jasperreports-fonts-6.0.0-jasperreports-fonts-6.4.0
试用itext:
Itext7-pdfa-7.0.2.jar itextpdf-5.9.jar
当我尝试导出到文档时。导出成功,没有警告,但字段仍然为空。但在预览中,它显示了值。1)您应该发布;2) 您正在代码处传递
jreportydatasource
-您的报告应该是空的