我的项目是:
EJB3.0+JBoss4的环境,起动没有问题,并且其他的画面也可以正常运行。
但今天为了做个文件上传下载的功能,但运行上传下载画面时,出现以下错误:20:18:06,927 INFO  [CreateAction] Initialize action of type: toonasofts.conductor.struts.cm.FileDownloadUploadAction
20:18:06,959 ERROR [[action]] Servlet.service() for servlet action threw exception
java.lang.ClassNotFoundException: No ClassLoaders found for: org.apache.commons.fileupload.FileItemFactory
at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:521)
at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at toonasofts.conductor.struts.cm.FileDownloadUploadAction.initDownloadFiles(FileDownloadUploadAction.java:270)
at toonasofts.conductor.struts.cm.FileDownloadUploadAction.execute(FileDownloadUploadAction.java:99)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)PS.文件上传下载我用的是commons-fileupload-1.2.2.jar。
网上有大侠说:问题的原因是在系统中使用工厂类导致的问题,不能从JBoss的类加载器中动态加载类 。
但没有说具体解决方案,还请那位大侠,能给与指点。先谢谢了!!!

解决方案 »

  1.   

    问题解决了!!!
    在JSOSS4中JBOSS的WEB加载器默认是false,
    所以把JBOSS自带的加载器由默认的false改为true,问题就可以解决了。
    方法是:将D:\jboss-eap-4.3\jboss-as\server\production\deploy\jboss-web.deployer\META-INF\jboss-service.xml中的UseJBossWebLoader值改为true即可
    解决方法:
    jboss所在路径\server\default\deploy\jboss-web.deployer\META-INF\jboss-service.xml中的UseJBossWebLoader中的false改为true。在此,还是谢谢各位了!以上解决方法,希望能帮到遇到同样问题的同胞们!!!