gpt4 book ai didi

google-app-engine - 如何在 Google App Engine 1.6.5 中运行 JSF 2.0

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:43 25 4
gpt4 key购买 nike

好的,我刚刚完成了我的第一个 JSF 项目,我想将它上传到 GAE。我已经尝试了大约 4 个小时,但无法正常工作。

我正在使用 JSF 2.0 和 App Engine 1.6.5。

我已经尝试了几个教程和以下所有组合:

First tutorial

jar - javax.faces-2.1.7-sources.jar el-ri-1.0.jar

设置 - GAE 1.6.5、JDK 1.7

错误:

java.lang.NoClassDefFoundError: javax.naming.InitialContext is a restricted class.     Please see the Google  App Engine developer's guide for more details.
at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)

我认为这是因为我使用了不同的配置,所以我更改为使用确切的设置。降级到 GAE 1.6.3.1 并使用教程中的确切 jars,但没有什么不同。

所以我尝试了第二个教程,其中说明列出了修复程序,其中涉及用 jsf-impl-gae.jar 替换 jsf-impl.jar 但这没有帮助。

执行此操作后出现错误:

WARNING: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@1678d71{/,C:\Users\TOSHIBA\Documents\NetBeansProjects\Google AppEngine JSF 2.0 Template\war}: java.lang.VerifyError: Expecting a stackmap frame at branch target 36 in method com.sun.faces.config.WebConfiguration.getServletContextName()Ljava/lang/String; at offset 10
May 07, 2012 5:07:17 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed JettyContainerService$ApiProxyHandler@1547ec9: java.lang.VerifyError: Expecting a stackmap frame at branch target 36 in method com.sun.faces.config.WebConfiguration.getServletContextName()Ljava/lang/String; at offset 10
May 07, 2012 5:07:17 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: Error starting handlers
java.lang.VerifyError: Expecting a stackmap frame at branch target 36 in method com.sun.faces.config.WebConfiguration.getServletContextName()Ljava/lang/String; at offset 10
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:163)

我也试过指南listed here

我已经尝试了这里关于两个不同的应用程序引擎 SDK 和两个 JDK 的所有可能的教程组合,我现在有 7 个 jar:el-api-2.2.1-b04.jar,el-impl-2.2.1-b05 .jar、el-ri-1.0.jar、javax.faces-2.1.7.jar、javax.faces-2.1.7-sources.jar、jsf-api-2.1.7.jar、jsf-impl-gae.jar .

任何帮助将不胜感激 我想明天我会寻找一种不同的方式来上传我的项目,因为我在使用 JSF 和 Eclipse 时遇到了麻烦,因此我总是使用 Netbeans,但是 Netbeans 的 GAE 插件不再运行.

谢谢

最佳答案

来自 the tutorial :

3.3 Create a new WebConfiguration.java.

JSF 2 is using “javax.naming.InitialContext” that’s not support in GAE.

To solve this, you need to get a copy of the JSF’s source code, clone the WebConfiguration.java, comment methods that are using “javax.naming.InitialContext” class, put it in “src/com/sun/faces/comfig/WebConfiguration.java“. Now, your newly created WebConfiguration.java class will overload the original WebConfiguration.java.

根据教程,抛出 ClassDefNotFoundError 的类是受限类。您需要访问 GAE-JSF javax.naming.InitialContext is a Restricted Class Source Code并检索 JSF 源代码的副本并制作 WebConfiguration 类的副本并重载原始代码。

GAE 的白名单可以通过重命名包来覆盖,或者在这种情况下,完全避免它们。澄清一下,此步骤要求您做的是用您修改的 WebConfiguration.java 替换 WebConfiguration.java,其中所有使用 InitialContext 的方法都被注释掉了。这将从 Google 的白名单中隐藏该类,因此它不会强制 ClassNotFoundDefErrors。

关于google-app-engine - 如何在 Google App Engine 1.6.5 中运行 JSF 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com