严重: Servlet.service() for servlet [FileServlet] in context with path [/FileManager] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: net/sf/json/JSONObject
at service.FileService.getLeft(FileService.java:34)
at servlet.FileServlet.doPost(FileServlet.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
--------------------------------------------------------------------------------
我在build path里添加了以下的包:
json-lib-2.4
commons-beanutils-1.8.3
httpclient-4.1.1
commons-lang-2.6
commons-loggin-1.1.1
commoms-collections-3.2
ezmorph-1.0.6
引起错误的是FileService类中的这一句:JSONObject jo = new JSONObject();
可奇怪的是如果我写一个JUnit来调用FileService就不会出错,但如果用Servlet的话就要出错。该怎么处理呢?

解决方案 »

  1.   

    Make sure Json-lib is available to J2EE container. Either put this jar in lib folder of your web application or put in container shared folder.Hope it helps.Ali
      

  2.   

    按照楼上兄台所说的,将所有jar包放到tomcat的lib目录下就可以了,但这样貌似太麻烦了吧?有没有简单一点的办法?请说详细一点,我菜鸟一个..以前用Myeclipse 的时候就没操过这么多的心...
      

  3.   

    找不到类,将这个类所在的包放在工程的we-inf\lib下面就可以了
      

  4.   

    LZ现在用的什么?
    这些Jar包通常摆WEB-INF/lib目录中即可。
      

  5.   

    现在用的eclipse,需要的jar包已经放入了build path中,而且如果单独写一个junit来运行都没问题,一旦用servlet来调用就会出错,除非把那些jar包拷贝到tomcat/lib目录下。
      

  6.   

    项目属性,deployment assembly -> add --> java build path entries,选中要部署的所有jar包即可。