Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么JasperViewer只在本地主机上工作?_Java_Jasper Reports - Fatal编程技术网

Java 为什么JasperViewer只在本地主机上工作?

Java 为什么JasperViewer只在本地主机上工作?,java,jasper-reports,Java,Jasper Reports,我只是想知道为什么JasperViewer只在本地主机上工作。当我将项目部署到服务器时,客户端无法再查看报告 String reportDir = getServletContext().getRealPath("WEB-INF/classes/com/proj/reports"); String fileName = reportDir + "\\" + request.getParameter("reportName") + ".jasper"; File o

我只是想知道为什么JasperViewer只在本地主机上工作。当我将项目部署到服务器时,客户端无法再查看报告

String reportDir = getServletContext().getRealPath("WEB-INF/classes/com/proj/reports");
        String fileName = reportDir + "\\" + request.getParameter("reportName") + ".jasper";
        File outReportDir = new File("C:/REPORTS_FOLDER");
        outReportDir.mkdir();
        long millis = System.currentTimeMillis();
        String outFileName = outReportDir + "\\" + request.getParameter("reportName") + "_" + millis + ".pdf";
        HashMap parameters = new HashMap();
        parameters.put("P_BOOKING_MONTH", request.getParameter("selMonth"));
        parameters.put("P_BOOKING_YR", request.getParameter("selYear"));

        try {
            Connection conn = ConnectionUtil.getConnection();
            JasperPrint print = JasperFillManager.fillReport(fileName, parameters, conn);
            JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName);
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
            exporter.exportReport();

            JasperViewer.viewReport(print, false); }...

您已经在源代码中硬编码了输出目录

始终可能存在诸如服务器不是Windows环境或服务器中不存在文件夹“C:/REPORTS\u folder”之类的问题


最好将其作为可配置属性

您已经在源代码中硬编码了输出目录

始终可能存在诸如服务器不是Windows环境或服务器中不存在文件夹“C:/REPORTS\u folder”之类的问题

最好将其作为可配置属性

是一个组件,它是在执行命令的计算机上启动的(通常用于已安装的应用程序),因此,如果您在服务器上执行命令,它将在服务器上打开(或抛出一个,如果没有配置为具有屏幕),我们不能在服务器应用程序中使用此命令

您可以使用在客户端计算机上启动命令,但我强烈建议不要使用此命令(它在浏览器中的支持是,因此您无法确定它是否适用于所有客户端)

通常情况下,所做的是将导出为pdf(html或其他选择的格式)的发送到客户端浏览器,客户端可以使用喜爱的程序打开文件并预览它

在已经导出为pdf的示例代码中,将pdf直接传递给客户端。因此删除

JasperViewer.viewReport(print, false);
是在执行命令的计算机上启动的组件(通常在已安装的应用程序中使用),因此,如果在服务器上执行命令,它将在服务器上打开(或抛出一个,如果未配置为具有屏幕),我们不能在服务器应用程序中使用此命令

您可以使用在客户端计算机上启动命令,但我强烈建议不要使用此命令(它在浏览器中的支持是,因此您无法确定它是否适用于所有客户端)

通常情况下,所做的是将导出为pdf(html或其他选择的格式)的发送到客户端浏览器,客户端可以使用喜爱的程序打开文件并预览它

在已经导出为pdf的示例代码中,将pdf直接传递给客户端。因此删除

JasperViewer.viewReport(print, false);

请添加客户端在连接到服务器时遇到的错误。请参阅@PetterFriberg谢谢您的回复。但我没有成功。我刚刚接触java,不知道如何为此制作一些小程序。顺便说一下,非常感谢@RalphSantiago为什么需要小程序?只需将pdf传递给客户端,在web应用程序中不使用JasperViewer.viewReport(打印,false);请添加客户端在连接到服务器时遇到的错误。请参阅@PetterFriberg谢谢您的回复。但我没有成功。我刚刚接触java,不知道如何为此制作一些小程序。顺便说一下,非常感谢@RalphSantiago为什么需要小程序?只需将pdf传递给客户端,在web应用程序中不使用JasperViewer.viewReport(打印,false);