我只在linux中得到这个错误,在Windows中它运行正常
Linux目标:Ubuntu 18.04/Deepin 15.11
Java版本:1.8.0_
在下面的打印对话框中发出打印命令时出错:
java - 从linux Deepin 15中的Java应用程序打印jaspersoft Studio中做出的报告时出错-LMLPHP
=代码

private void testDialogPrint() {

    try {

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

        Connection connection = DriverManager.getConnection("jdbc:sqlserver://x.x.x.x:1433;databaseName=abc","sa","****");

        HashMap<String, Object> params = new HashMap<String,Object>();;

        JasperPrint printedReport = JasperFillManager.fillReport("test.jasper", params, connection);

        String outputFilename = "Test.pdf";
        JasperExportManager.exportReportToPdfFile( printedReport, outputFilename );//file creation success

        JasperPrintManager.printReport(printedReport, true);


    } catch (ClassNotFoundException | SQLException | JRException e) {
        e.printStackTrace();
    }

}

=MESSAGE错误
net.sf.jasperreports.engine.JRException: Error printing report.
    at net.sf.jasperreports.engine.print.JRPrinterAWT.printPages(JRPrinterAWT.java:215)
    at net.sf.jasperreports.engine.JasperPrintManager.print(JasperPrintManager.java:246)
    at net.sf.jasperreports.engine.JasperPrintManager.print(JasperPrintManager.java:133)
    at net.sf.jasperreports.engine.JasperPrintManager.printReport(JasperPrintManager.java:329)
    at com.Start.imprimir(Start.java:46)
    at com.Start.main(Start.java:27)
Caused by: java.awt.print.PrinterIOException
    at sun.print.PSPrinterJob$PrinterSpooler.run(PSPrinterJob.java:737)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.print.PSPrinterJob.endDoc(PSPrinterJob.java:792)
    at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1562)
    at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1390)
    at net.sf.jasperreports.engine.print.JRPrinterAWT.printPages(JRPrinterAWT.java:201)
    ... 5 more
Caused by: java.io.IOException: Cannot run program "/usr/bin/lpr": error=2, No existe el fichero  o el directorio
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at java.lang.Runtime.exec(Runtime.java:620)
    at java.lang.Runtime.exec(Runtime.java:485)
    at sun.print.PSPrinterJob$PrinterSpooler.run(PSPrinterJob.java:730)
    ... 10 more
Caused by: java.io.IOException: error=2, No existe el fichero o el directorio
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 13 more

最佳答案

看起来Sun JDK是为/usr/bin/lpr硬编码的。-https://kbpdfstudio.qoppa.com/printing-to-pdf-error-message-on-debian-gnulinux-7/

07-24 09:44
查看更多