我在servlet中控制上传文件的时候,在取得上传文件名的时候出现如下错误
java.lang.NoClassDefFoundError: java/lang/StringBuilder
        at accept.dsServlet.doGet(dsServlet.java:55)
        at accept.dsServlet.doPost(dsServlet.java:120)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1006)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:419)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:315)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:6718)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3764)
        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2644)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)我的servlet代码如下:
package accept;import com.jspsmart.upload.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.sql.DataSource;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.GenericServlet;public class dsServlet extends HttpServlet {
SmartUpload mySmartUpload = new SmartUpload();
GenericServlet config ; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
int count=0;
try{
mySmartUpload.initialize(getServletConfig(), request,response);
mySmartUpload.setTotalMaxFileSize(10000000);
mySmartUpload.setAllowedFilesList("enc,key");
mySmartUpload.upload();
}catch(SmartUploadException sue){
System.out.println("smartuploadException");
}
try{
count = mySmartUpload.save("file/applyFileReceive");
String[] fileNames = new String[mySmartUpload.getFiles().getCount()];
for(int i=0;i<mySmartUpload.getFiles().getCount();i++){
com.jspsmart.upload.File myUpFile = mySmartUpload.getFiles().getFile(i);
fileNames[i] = myUpFile.getFileName();            
  }

//取得文件的文件名
String filepath = getServletContext().getRealPath("")+"\\file\\applyFileReceive\\";
String userid =(String)request.getSession().getValue("username");
String filename=fileNames[0];
String temp="";
boolean nj_flag = false;
int length1 = filename.length();
String payerId = filename.substring(length1-15,length1);
if(payerId.compareTo(userid)==0){

//判断文件名是否正确
boolean aflag = log.myFile.encNameIsRight(filename);

ConnectionManager conPool = new ConnectionManager();
     DataSource ds = null;
     Connection con = null;
    try {
      ds = conPool.getDataSource("chinatax");
      if (ds == null) {
        int count1 = 0;
        do {
          if (count1 % 200 == 0) {
            System.out.println("获得数据源出现重大错误:服务不能正常启动!");
            System.out.println("请尝试重新启动WEBLOGIC服务!");
          }
          count1++;
        }
        while (true);
      }
    }catch (Exception e) {
      System.out.println("启动服务:出现重大错误:");
      e.printStackTrace();
    }
decyptDS dt = new decyptDS(ds);
String s = dt.run();
System.out.println(s);
out.println(docType+"<HTML>\n"+"<HEAD><TITLE>SUCCESS</TITLE></HEAD>\n"+"<BODY BGCOLOR=\"#FDF5E6\">\n"+"<H1>上传文件成功!</H1>\n"+"</BODY></HTML>");

  }
else{
out.println(docType+"<HTML>\n"+"<HEAD><TITLE>SUCCESS</TITLE></HEAD>\n"+"<BODY BGCOLOR=\"#FDF5E6\">\n"+"<H1>您上传的文件名有误,请核对你的申报密文!!</H1>\n"+"</BODY></HTML>");
//File f4 = new File(filepath+filename);//文件名不正确,将其删除
//f4.delete();
}

}catch(Exception e){
out.println(docType+"<HTML>\n"+"<HEAD><TITLE>SUCCESS</TITLE></HEAD>\n"+"<BODY BGCOLOR=\"#FDF5E6\">\n"+"<H1>上传过程中出错:"+e.toString()+"</H1>\n"+"</BODY></HTML>");

System.out.println("上传过程中出错:");
e.printStackTrace();
}
} /**
 * The doPost method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to post.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request,response);

}}
错误出现在注释取得文件名下面的那行. 求救ing.

解决方案 »

  1.   

    java.lang.NoClassDefFoundError:   java/lang/StringBuilder 
    Weblogic用的jdk的版本太低,StringBuilde是从jdk5才开始引入的。
    换用StringBuffer。
      

  2.   

       java.lang.NoClassDefFoundError: java/lang/StringBuilder  
    Weblogic用的jdk的版本太低,StringBuilde是从jdk5才开始引入的。
    换用StringBuffer。
      

  3.   

    java.lang.NoClassDefFoundError: java/lang/StringBuilder  
    Weblogic用的jdk的版本太低,StringBuilde是从jdk5才开始引入的。
    换用StringBuffer。
      

  4.   

    建议LZ使用apache组织的一个上传组件好用实在