2012-05-06 10 views
3

最初のJSFプロジェクトを終了しましたので、GAEにアップロードします。私は過去4時間ほど頑張ってきましたが、それを機能させることはできません。Google App Engine 1.6.5でJSF 2.0を実行するには

私は、JSF 2.0とApp Engine 1.6.5を使用しています。 - javax.faces-2.1.7-sources.jar EL-RI-1.0.jar

セットアップ

First tutorial

ジャー:

は、私はいくつかのチュートリアルと、次のすべての組み合わせを試してみました - 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にダウングレードし、チュートリアルで正確なジャーを使用しましたが、それは変わりませんでした。

私はjsf-impl.jarをjsf-impl-gae.jarに置き換えることを含む2番目のチュートリアルを試しましたが、これは助けにはなりませんでした。私はこれを実行した後

私はエラーを取得する:私も、私は二つの異なるApp EngineのSDKおよび2つのJDKを持つ上、ここでのチュートリアルの考えられるあらゆる組み合わせを試してみましたlisted here

ガイドを試してみました

WARNING: failed c[email protected]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 [email protected]: 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) 

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は、 .faces-2.1.7-sources.jar、jsf-api-2.1.7.jar、jsf-impl-gae.jar。

私は、私がJSFとEclipseに何か問題があったので、私はいつもNetbeansを使用していますが、Netbeans用のGAEプラグインはもうなくなってしまったので、私は明日私のプロジェクトをアップロードする別の方法を探しています。機能する。

the tutorialからあなたに

+0

AppEngineではサポートされていない技術を使用する習慣があります。まず、NetBeansプラグインを使用します。 JSFで2番目に。 GoogleがSDK 1.7.0または今後のリリースをリリースすれば、同じ問題を再び解決しなければならない場合があるので、サポートされているものを使用して制限されていないものを使用すると、より良い運を得られる可能性があります。それで、幸運があなたの答えを見つけると言った。私の最善のアドバイスは、あなたのロギングレベルを上げることで、SDKやフレームワークで起こっていることをすべて見ることができるので、問題を解決できる可能性があります。質問の範囲を狭めることができれば、より良い運を得られるかもしれません。 – jmort253

+0

制限付きクラスが最も大きな問題です。パッケージ名がGAEのホワイトリストにないクラスのリストと一致しないように、ライブラリの名前を変更した人物を探す必要があります。 – jmort253

+0

「サポートされていること」を明確にしてください。別のフレームワークに切り替えますか? – EHarpham

答えて

4

ありがとう:

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を投げているクラスがretrictedクラスです。 GAE-JSF javax.naming.InitialContext is a Restricted Class Source Codeにアクセスして、JSFソースコードのコピーを取得し、WebConfigurationクラスのコピーを作成し、オリジナルをオーバーロードする必要があります。

GAEのホワイトリストは、パッケージの名前を変更するか、この場合はそれらを完全に避けることで上書きできます。これを明確にするために、WebConfiguration.javaを、InitialContextを使用するすべてのメソッドがコメントアウトされている場所に置き換えてください。これはクラスをGoogleのホワイトリストから隠すので、ClassNotFoundDefErrorsを強制しません。

+0

ありがとうございました。私は誰かがすでにこの作業を行っている場所に2つのファイルを配置していますが、これらのファイルを使用すると、投稿の2番目のエラーメッセージが表示されます。私はSpringに切り替えることを考えていましたが、JSFで必要な回避策があるようです。 – EHarpham

+0

結局のところ、警告だけです。そのアプリが適切な場所にあっても機能しないのですか?ログレベルをALLに設定して、アプリが動作しないことに関連するすべてのメッセージが確実に表示されるようにしてもよろしいですか?ここ数週間で書かれた記事を書いた人/ガールに連絡することができます。 – jmort253

+0

私のWebアプリケーションで同じ問題が発生していますが、このソリューションはAppengineクラウド、つまりAppspot.comに配備されていても機能しますか? – xybrek

関連する問題