我在做毕业设计时遇到了这个问题,我想在管理员模块中添加excel导入功能,在参考了许多高手的文章后,还是遇到了问题错误代码如下:
Error: 500
Location: /myaaa/teacher/chengjitongji.jsp
Internal Servlet Error:org.apache.jasper.JasperException: Unable to compile Note: sun.tools.javac.Main has been deprecated.
/usr/local/jakarta-tomcat-3.3.1a/work/DEFAULT/ROOT/myaaa/teacher/chengjitongji_2.java:141: '}' expected.
                  out.write("\r\n\r\n\r\n");
                                            ^
/usr/local/jakarta-tomcat-3.3.1a/work/DEFAULT/ROOT/myaaa/teacher/chengjitongji_2.java:145: Statement expected.
                   public class TestExcel {
                   ^
/usr/local/jakarta-tomcat-3.3.1a/work/DEFAULT/ROOT/myaaa/teacher/chengjitongji_2.java:150: Invalid method declaration; return type required.
                         main(String[] args) {
                         ^
/usr/local/jakarta-tomcat-3.3.1a/work/DEFAULT/ROOT/myaaa/teacher/chengjitongji_2.java:233: Type expected.
          } catch (Exception ex) {
            ^
4 errors, 1 warning at org.apache.tomcat.facade.JasperLiaison.javac(JspInterceptor.java:898)
at org.apache.tomcat.facade.JasperLiaison.processJspFile(JspInterceptor.java:733)
at org.apache.tomcat.facade.JspInterceptor.requestMap(JspInterceptor.java:506)
at org.apache.tomcat.core.ContextManager.processRequest(ContextManager.java:968)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:875)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
at org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10Interceptor.java:176)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:516)
at java.lang.Thread.run(Thread.java:595)

解决方案 »

  1.   

    程序如下:
    <%@ page contentType="text/html; charset=gb2312" language="java" %>
    <%@ page import ="java.io.FileInputStream" %><%@ page import ="java.io.IOException"%>
    <%@ page import ="java.io.InputStream"%>
    <%@ page import ="java.sql.Connection"%>
    <%@ page import ="java.sql.DriverManager"%>
    <%@ page import ="java.sql.SQLException"%>
    <%@ page import ="java.sql.Statement"%>
    <%@ page import="jinghua.*"%>
    <%@ page import ="jxl.Cell"%>
    <%@ page import ="jxl.Sheet"%>
    <%@ page import ="jxl.Workbook"%>
    <%@ page import ="jxl.read.biff.BiffException"%>
    <jsp:useBean id="DBCon" class="jinghua.JinghuaConn" scope="session">
    </jsp:useBean>
    <% public class TestExcel {        /**
             * @param args
             */
           main(String[] args) {
                    // TODO 自动生成方法存根
                    Cell cell = null;
                    String sql = null;
                    String insertDate = "";
                    try {
                            Connection con =DBCon.getConnection();
                            con.setAutoCommit(false);
                            Statement smt = con.createStatement();
                            InputStream fs = new FileInputStream("/usr/local/jakarta-tomcat-3.3.1a/webapps/ROOT/myaaa/1.xls");
                            // 得到 workbook
                            Workbook wb = Workbook.getWorkbook(fs);
                            Sheet sh = "try";
                            sql = "CREATE TABLE "
                                            + "try"
                                            + " ("
                                            + "name varchar(50),sex varchar(10),age varchar(5),address varchar(30));";
                            smt.execute(sql);                        /*
                             * 开始循环,取得 cell 里的内容,这里都是按String来取的 为了省事,具体你自己可以按实际类型来取。或者都按
                             * String来取。然后根据你需要强制转换一下。
                             */
                            for (int i = 0; i < sh.getRows(); i++) {
                                    for (int j = 0; j < sh.getColumns(); j++) {
                                            cell = sh.getCell(j, i);
                                            if (j != sh.getColumns() - 1)
                                                     //System.out.print(cell.getContents() + ",");
                                                    insertDate += "'" + cell.getContents() + "',";
                                            else
                                                    insertDate += "'" + cell.getContents() + "'";
                                            System.out.print(cell.getContents());                                }                                sql = "INSERT INTO " +"try" + "(name,sex,age,address)"
                                                    + " VALUES(" + insertDate + ");";
                                    smt.execute(sql);
                                    /*这里把 insertDate设置为空。不然 insertData下次
                                     * 还会叠加上次的内容。也就失去了我们的目的。
                                     */
                                    insertDate = "";                        }
                            /*
                             * 提交事务
                             */
                            con.commit();
                            con.close();//关闭数据库连接
                            wb.close();//关闭打开的文件  
                            System.out.println("OK!");
                            // System.out.println(insertDate);
                            // start sql;                } catch (IOException ex) {
                            ex.printStackTrace();
                    } catch (BiffException ex) {
                            ex.printStackTrace();
                    }                catch (ClassNotFoundException ex) {
                            System.out.println("class not found");
                    } 

    %> 
      

  2.   

    其中 jinghua.JinghuaConn是定义的连接数据库的bean,这段代码也是从网上参考的,由于毕设很急,多谢各位高手
      

  3.   

    main(String[] args) { 的定义多看一下嘛,楼主还是找点java语法的基础看一下吧
    public static void main(String []args)
      

  4.   

    '}' expected.
    out.write("\r\n\r\n\r\n"); //"}"被希望Statement expected.
    public class TestExcel {//Invalid method declaration; return type required.
    main(String[] args) {//错误的方法声明,需要返回值Type expected  //
    }