java 已部署动态 Web 项目的 WebSphere ClassNotFoundException

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15956156/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 21:26:12  来源:igfitidea点击:

WebSphere ClassNotFoundException with deployed dynamic web project

javawebsphereclasspathclassnotfoundexceptionopenfaces

提问by JKramarz

Problem

问题

I am currently experiencing a ClassNotFoundException with a deployed EAR (with OpenFaces web project) on WebSphere 7.0 application server. The EAR deploys with no problems, but when I go to access a page from the web project (included in the EAR), I get the ClassNotFoundException (below). I have exported the EAR to make sure that everything was there and the WAR file is included. When I looked inside the WAR file, the class that is not being found is included in the WEB-INF/classes folder. The exception is referring to a class that is in the web project and not in a JAR if that helps. I'm guessing I am missing something in my project configuration. Any and all feedback is much appreciated!

我目前在 WebSphere 7.0 应用程序服务器上遇到一个 ClassNotFoundException 和一个已部署的 EAR(使用 OpenFaces Web 项目)。EAR 部署没有问题,但是当我从 Web 项目(包含在 EAR 中)访问页面时,我收到 ClassNotFoundException(如下)。我已经导出 EAR 以确保所有内容都在那里并且包含 WAR 文件。当我查看 WAR 文件时,未找到的类包含在 WEB-INF/classes 文件夹中。如果有帮助,则例外是指 Web 项目中的类,而不是 JAR 中的类。我猜我的项目配置中遗漏了一些东西。非常感谢任何和所有反馈!

Error

错误

[4/3/13 15:42:49:462 EDT] 0000001b Digester      E org.apache.commons.digester.Digester startElement Begin event threw exception
                             java.lang.ClassNotFoundException: org.openfaces.demo.services.MenuItem
at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:191)
at java.lang.ClassLoader.loadClass(ClassLoader.java:660)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:111)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:510)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
at org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205)
at org.apache.commons.digester.Rule.begin(Rule.java:175)
at org.apache.commons.digester.Digester.startElement(Digester.java:1453)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1296)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:340)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:307)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:212)
at org.apache.commons.digester.Digester.parse(Digester.java:1765)
at org.openfaces.demo.services.MenuService.loadMenu(MenuService.java:75)
at org.openfaces.demo.services.MenuService.<init>(MenuService.java:215)
at java.lang.J9VMInternals.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1345)
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:190)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:107)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:374)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:222)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:88)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:73)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:45)
at org.apache.el.parser.AstValue.getValue(AstValue.java:91)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:263)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:100)
at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:860)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:946)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:836)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
at org.openfaces.ajax.AjaxViewRoot.encodeAll(AjaxViewRoot.java:124)
at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:292)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:223)
at org.openfaces.ajax.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:64)
at org.openfaces.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:413)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:114)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
at org.openfaces.util.ResourceFilter.doFilter(ResourceFilter.java:99)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)

[4/3/13 15:42:49:587 EDT] 0000001b webapp        I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0296E: [OlympusAetherUIEAR#OlympusAetherUI.war][/OlympusAetherUI][Servlet.LOG]:.Error at line 26 char 12: org.openfaces.demo.services.MenuItem:.java.lang.ClassNotFoundException: org.openfaces.demo.services.MenuItem
at org.apache.commons.digester.Digester.createSAXException(Digester.java:3181)
at org.apache.commons.digester.Digester.createSAXException(Digester.java:3207)
at org.apache.commons.digester.Digester.startElement(Digester.java:1456)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1296)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:340)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:307)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:212)
at org.apache.commons.digester.Digester.parse(Digester.java:1765)
at org.openfaces.demo.services.MenuService.loadMenu(MenuService.java:75)
at org.openfaces.demo.services.MenuService.<init>(MenuService.java:215)
at java.lang.J9VMInternals.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1345)
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:190)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:107)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:374)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:222)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:88)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:73)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:45)
at org.apache.el.parser.AstValue.getValue(AstValue.java:91)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:263)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:100)
at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:860)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:946)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:836)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
at org.openfaces.ajax.AjaxViewRoot.encodeAll(AjaxViewRoot.java:124)
at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:292)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:223)
at org.openfaces.ajax.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:64)
at org.openfaces.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:413)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:114)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
at org.openfaces.util.ResourceFilter.doFilter(ResourceFilter.java:99)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)

Web project configuration

网页项目配置

  • Build path for web project src: OlympusAetherUI/WebContent/WEB-INF/classes
  • Deploy path for src: WEB-INF/classes
  • web项目src的构建路径:OlympusAetherUI/WebContent/WEB-INF/classes
  • src 的部署路径:WEB-INF/classes

EAR deployment assembly

EAR 部署程序集

  • Source: OlympusAetherUI Deploy path: OlympusAetherUI.war
  • Source: OlympusCommon Deploy path: lib/OlympusCommon.jar
  • Source: OlympusGenerated Deploy path: lib/OlympusGenerated.jar
  • 来源:OlympusAetherUI 部署路径:OlympusAetherUI.war
  • 来源:OlympusCommon 部署路径:lib/OlympusCommon.jar
  • 来源:OlympusGenerated 部署路径:lib/OlympusGenerated.jar

采纳答案by JKramarz

Found the source of the problem. The commons-digester.jar needed to be in WEB-INF/lib so that it was able to find the MenuItem class since the EAR classpath doesn't have visibility to the web classpath.

找到了问题的根源。commons-digester.jar 需要位于 WEB-INF/lib 中,以便它能够找到 MenuItem 类,因为 EAR 类路径对 Web 类路径不可见。

回答by Ravi Trivedi

I think your classpath is wrong.

我认为你的类路径是错误的。

Under WEB-INF/classes, check these folders >> org/openfaces/demo/servicesand then check the class MenuIteminside the last directory Services.

WEB-INF/classes 下,检查这些文件夹 >> org/openfaces/demo/services然后检查最后一个目录Services 中的类MenuItem

Regards,

问候,