最近在学jasperreport,运行了一个例子,在Windows下能跑,但是在Linux下出了问题,不解。jsp文件如下:
<%@ page contentType="text/html;charset=utf-8"%> 
    <%@ page import="net.sf.jasperreports.engine.*"%> 
    <%@ page import="java.util.*"%> 
    <%@ page import="java.io.*" %> 
    <%@ page import="java.sql.*" %>
    <%  
    String ctxpath = request.getContextPath();//     try{

Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://10.1.16.163:3306/esocc_0702?user=root&password=123");
// }catch(ClassNotFoundException e){
// System.out.println("Sorry,can't find the driver");
// e.printStackTrace();
// }catch(SQLException e1){
// System.out.println("Sorry,i don't know");
// e1.printStackTrace();
// }catch(Exception e2){
// System.out.println("It's wrong");
// } File reportFile = new File(this.getServletContext().getRealPath("/test.jasper"));
Map para = new HashMap();
try{
JasperRunManager.runReportToHtmlFile(reportFile.getPath(),para,conn);
response.sendRedirect(ctxpath+"/test.html");
}catch(Exception e){
System.out.println(e.getMessage());
}
    %> 
错误提示如下:org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 21 in the jsp file: /reportRun.jsp
JasperRunManager cannot be resolved
18:  File reportFile = new File(this.getServletContext().getRealPath("/test.jasper"));
19:  Map para = new HashMap();
20:  try{
21:  JasperRunManager.runReportToHtmlFile(reportFile.getPath(),para,conn);
22:  response.sendRedirect(ctxpath+"/test.html");
23:  }catch(Exception e){
24:  System.out.println(e.getMessage());
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
不知道是什么原因,我的jar包是直接把windows下的包(windows下正常运行)复制到Linux下的,不知道问题在哪,是不是少导入了包?导致不能解析JasperRunManager类?求大神指点迷津,谢谢

解决方案 »

  1.   

    "/test.jasper"换成 "\test.jasper",是不是因为windows和Linux下的路径差异导致的,或者是目录结构
      

  2.   

    改了也没用,报错的地方是JasperRunManager cannot be resolved,应该是不能解析JasperRunManager这个类,我怀疑是少了个jar包,但是Windows底下是可以运行的,郁闷
    WEB-INF下lib的jar包如下
    commons-beanutils-1.8.0.jar
    -rw-r--r-- 1 root chasel.tu  175426 Dec  7 14:22 commons-collections-2.1.1.jar
    -rw-r--r-- 1 root chasel.tu  196768 Dec  7 14:22 commons-digester-2.1.jar
    -rw-r--r-- 1 root chasel.tu   96529 Dec  7 14:22 commons-javaflow-20060411.jar
    -rw-r--r-- 1 root chasel.tu   60841 Dec  7 14:22 commons-logging-1.1.1.jar
    -rw-r--r-- 1 root chasel.tu 6191960 Dec  7 14:22 groovy-all-2.0.1.jar
    -rw-r--r-- 1 root chasel.tu 1130070 Dec  7 14:22 iText-2.1.7.jar
    -rw-r--r-- 1 root chasel.tu 1130550 Dec  7 14:22 iText-2.1.7.js1.jar
    -rw-r--r-- 1 root chasel.tu  331811 Dec  7 14:22 iTextAsian.jar
    -rw-r--r-- 1 root chasel.tu 4214416 Dec  7 14:22 jasperreports-4.8.0.jar
    -rw-r--r-- 1 root chasel.tu  496800 Dec  7 14:22 jasperreports-applet-4.8.0.jar
    -rw-r--r-- 1 root chasel.tu 2478087 Dec  7 14:22 jasperreports-fonts-4.8.0.jar
    -rw-r--r-- 1 root chasel.tu 4258472 Dec  7 14:22 jasperreports-javaflow-4.8.0.jar
    -rw-r--r-- 1 root chasel.tu  309294 Dec  7 14:22 jcommon-1.0.15.jar
    -rw-r--r-- 1 root chasel.tu 1368681 Dec  7 14:22 jfreechart-1.0.12.jar
    -rw-r--r-- 1 root chasel.tu  709922 Dec  7 14:22 mysql-connector-java-5.1.7-bin.jar
    -rw-r--r-- 1 root chasel.tu 8020649 Dec  7 14:22 STZhongsong.jar  //这个是字体,我自己弄的
      

  3.   

    我在windows下也遇到和你同样的问题 ,请问你在windows下是怎么解决的呢 ?
    多谢 
    把jasper文件和jsp文件放在tomcat的web根目录下,访问时报错如下 :
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 21 in the jsp file: /reportRun.jsp
    JasperRunManager cannot be resolved
    18: Map parameters = new HashMap();
    19: try {
    20: //执行报表程序
    21: JasperRunManager.runReportToHtmlFile(reportFile.getPath(),
    22: parameters, conn);
    23: response.sendRedirect(ctxpath+"/myreport.html"); //此处的myreport是
    24: 报表的名称
    An error occurred at line: 24 in the jsp file: /reportRun.jsp
    Syntax error, insert "AssignmentOperator Expression" to complete Assignment
    21: JasperRunManager.runReportToHtmlFile(reportFile.getPath(),
    22: parameters, conn);
    23: response.sendRedirect(ctxpath+"/myreport.html"); //此处的myreport是
    24: 报表的名称
    25: }
    26: catch (Exception e) {
    27: System.out.println( e.getMessage() );
    An error occurred at line: 24 in the jsp file: /reportRun.jsp
    Syntax error, insert ";" to complete Statement
    21: JasperRunManager.runReportToHtmlFile(reportFile.getPath(),
    22: parameters, conn);
    23: response.sendRedirect(ctxpath+"/myreport.html"); //此处的myreport是
    24: 报表的名称
    25: }
    26: catch (Exception e) {
    27: System.out.println( e.getMessage() );
    An error occurred at line: 24 in the jsp file: /reportRun.jsp
    报表的名称 cannot be resolved
    21: JasperRunManager.runReportToHtmlFile(reportFile.getPath(),
    22: parameters, conn);
    23: response.sendRedirect(ctxpath+"/myreport.html"); //此处的myreport是
    24: 报表的名称
    25: }
    26: catch (Exception e) {
    27: System.out.println( e.getMessage() );
    Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
    --------------------------------------------------------------------------------Apache Tomcat/6.0.26