【问题标题】:Google App Engine + JSF 2 give the errorGoogle App Engine + JSF 2 给出错误
【发布时间】:2012-09-06 11:18:16
【问题描述】:

我正在将此链接用于带有 jsf 的谷歌应用引擎,所以当我在 Eclipse 上运行时出现此错误,因此请提供所需的解决方案 链接是http://www.mkyong.com/google-app-engine/google-app-engine-jsf-2-example/

    java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass
     (IsolatedAppClassLoader.java:207)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at org.mortbay.util.Loader.loadClass(Loader.java:91)
    at org.mortbay.util.Loader.loadClass(Loader.java:71)
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer
    (JettyContainerService.java:197)
    at com.google.appengine.tools.development.AbstractContainerService.startup
    (AbstractContainerService.java:241)
    at com.google.appengine.tools.development.DevAppServerImpl.start
    (DevAppServerImpl.java:148)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply
    (DevAppServerMain.java:310)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
    at com.google.appengine.tools.development.DevAppServerMain.<init>
     (DevAppServerMain.java:249)
     at com.google.appengine.tools.development.DevAppServerMain.main
     (DevAppServerMain.java:225)

  Sep 06, 2012 10:58:55 AM com.google.appengine.tools.development.ApiProxyLocalImpl log
     SEVERE: javax.servlet.ServletContext log: unavailable
      javax.servlet.UnavailableException: javax.faces.webapp.FacesServlet
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer
    (JettyContainerService.java:197)
    at com.google.appengine.tools.development.AbstractContainerService.startup
     (AbstractContainerService.java:241)
    at com.google.appengine.tools.development.DevAppServerImpl.start
    (DevAppServerImpl.java:148)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply
    (DevAppServerMain.java:310)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
    at com.google.appengine.tools.development.DevAppServerMain.
    <init>(DevAppServerMain.java:249)
    at com.google.appengine.tools.development.DevAppServerMain.main
    (DevAppServerMain.java:225)

     Sep 06, 2012 10:58:55 AM com.google.apphosting.utils.jetty.JettyLogger warn
   WARNING: failed Faces Servlet: java.lang.NullPointerException
    Sep 06, 2012 10:58:55 AM com.google.apphosting.utils.jetty.JettyLogger warn
   WARNING: Failed startup of context
   com.google.appengine.tools.development.DevAppEngineWebAppContext@1dc94ea
    {/,C:\Documents and Settings\Shilendra Sharma\workspace\Shilu\war}
     java.lang.NullPointerException
    at java.lang.Class.isAssignableFrom(Native Method)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
     at com.google.appengine.tools.development.JettyContainerService.startContainer
    (JettyContainerService.java:197)
    at com.google.appengine.tools.development.AbstractContainerService.startup
    (AbstractContainerService.java:241)
    at com.google.appengine.tools.development.DevAppServerImpl.start
    (DevAppServerImpl.java:148)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply
    (DevAppServerMain.java:310)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs
    (Parser.java:48)
    at com.google.appengine.tools.development.DevAppServerMain.
    <init>(DevAppServerMain.java:249)
    at com.google.appengine.tools.development.DevAppServerMain.main
    (DevAppServerMain.java:225)


   so any one help me for it work properly

应用 shilendra

【问题讨论】:

  • 这个问题提示你没有正确完成教程中的“2.JSF 2 Dependencies”这一步。
  • 好的,我可以理解这对于本教程中带有 jsf 的谷歌应用引擎来说是不够的

标签: java google-app-engine jsf


【解决方案1】:

JSF 2 正在使用 GAE 不支持的“javax.naming.InitialContext”。

解决这个问题:

  • 您需要获取 JSF 源代码的副本。复制 WebConfiguration.java
  • 使用“javax.naming.InitialContext”类的注释方法
  • 但是等等,我已经修改了最新的(jsf 2.2.12),这里是:WebConfiguration.java
  • 将其放入包 com.sun.faces.config 中。

现在,您新创建的 WebConfiguration.java 类将重载原始 WebConfiguration.java。

【讨论】:

  • 嗯我不太明白把这个文件放在哪里。我是否必须将 JSF jar 添加到我的项目中。那在哪里?还是我将它放在我的项目源代码中并在我自己的项目中制作一个包“com.sun.face.config”?请帮忙解释一下
  • 不,只是创建一个新包: javax.naming.InitialContext 。然后是一个新类: WebConfiguration 。然后将上面文件中的类内容复制并粘贴到新类中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 2021-11-02
  • 2011-08-11
  • 1970-01-01
相关资源
最近更新 更多