3

さて、最初のJSFプロジェクトが終了したばかりなので、GAEにアップロードしたいと思います。私は過去4時間ほど試していて、それを機能させることができません。

JSF2.0とAppEngine1.6.5を使用しています。

私はいくつかのチュートリアルと以下のすべての組み合わせを試しました:

最初のチュートリアル

ジャー-javax.faces-2.1.7-sources.jarel-ri-1.0.jar

セットアップ-GAE1.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にダウングレードし、チュートリアルで正確なjarを使用しましたが、違いはありませんでした。

そこで、jsf-impl.jarをjsf-impl-gae.jarに置き換えることを含む、リストされた修正を記載した2番目のチュートリアルを試しましたが、これは役に立ちませんでした。

これを行った後、エラーが発生します:

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)

ここにリストされているガイドも試しました

ここでは、2つの異なるアプリエンジンSDKと2つの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プラグインは機能していません。

ありがとうございました

4

1 に答える 1

4

チュートリアルから:

3.3 新しい WebConfiguration.java を作成します。

JSF 2 は、GAE でサポートされていない「javax.naming.InitialContext」を使用しています。

これを解決するには、JSF のソース コードのコピーを取得し、WebConfiguration.java を複製し、「javax.naming.InitialContext」クラスを使用しているメソッドにコメントを付けて、「src/com/sun/faces/comfig/」に配置する必要があります。 WebConfiguration.java“. これで、新しく作成した WebConfiguration.java クラスが元の WebConfiguration.java をオーバーロードします。

チュートリアルによると、 ClassDefNotFoundError をスローしているクラスは制限されたクラスです。GAE-JSF javax.naming.InitialContext is a Restricted Class Source Codeにアクセスして、JSF ソース コードのコピーを取得し、WebConfiguration クラスのコピーを作成して、オリジナルをオーバーロードする必要があります。

GAE のホワイトリストは、パッケージの名前を変更するか、この場合はパッケージを完全に回避することでオーバーライドできます。明確にするために、このステップで求められているのは、WebConfiguration.java を、InitialContext を使用するすべてのメソッドがコメント化されている場所で変更したものに置き換えることです。これにより、そのクラスが Google のホワイトリストから隠され、ClassNotFoundDefErrors が強制されなくなります。

于 2012-05-06T23:11:09.733 に答える