Webサービスのテストクライアントを書いています。これは、JSFフレームワークを使用するNetbeans 6.9.1 Webアプリケーションです。Webサービスを呼び出すマネージドBeanが1つあります。
Beanクラス名のタイプミスに気付くまで、すべてがうまくいきました。それはserviceBeanで、最初の文字を大文字にしてServiceBeanに名前を変更しました。Netbeansの安全な名前変更機能を使用し、ファイル名とクラスの署名の両方が期待どおりに変更されました。
しかし、それ以来、Glassfish 3.0.1でアプリケーションを実行するのに多くの問題が発生しました。
エラーなしでNetbeansからアプリケーションをビルドできます( "Clean&Build"でも)。しかし、デプロイすると、サーバーログに次のメッセージが表示されます。
WARNUNG: Error in annotation processing: java.lang.NoClassDefFoundError: jsf/serviceBean (wrong name: jsf/ServiceBean)
WARNUNG: WEB9052: Unable to load class jsf.ServiceBean, reason: java.lang.ClassNotFoundException: jsf.ServiceBean
INFO: Mojarra 2.0.2 (FCS b10) für Kontext '/PidClient' wird initialisiert.
SCHWERWIEGEND: Unable to load annotated class: jsf.serviceBean, reason: java.lang.NoClassDefFoundError: jsf/serviceBean (wrong name: jsf/ServiceBean)
INFO: Loading application PidClient at /PidClient
私の管理対象Beanに送信されるフォームがfaceletページにあります。上記のエラーが発生してもフォームは読み込まれますが、送信しようとすると次のエラーが発生します。
WARNUNG: /index.xhtml @19,94 value="#{serviceBean.fldLname}": Target Unreachable, identifier 'serviceBean' resolved to null
javax.el.PropertyNotFoundException: /index.xhtml @19,94 value="#{serviceBean.fldLname}": Target Unreachable, identifier 'serviceBean' resolved to null
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:93)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008)
したがって、これは上記のNoClassDefFoundErrorによって引き起こされるフォローアップエラーのみになります。
そして奇妙なことに、プロジェクトをビルドするとServiceBean.classファイルが作成されますが、Netbeansからプロジェクトをデプロイしてからデプロイメントディレクトリを調べると、クラスの名前がserviceBean.classに変更されます。
展開プロセスがファイルの名前を変更しているようです。
何が問題ですか?(Netbeans 6.9.1、Glassfish 3.0.1、Windows 7)
更新:さらに改善:ServiceBean.javaの名前をServiceBean2.javaに変更。結果:「クリーン&ビルド」した場合、warファイルにはServiceBean2.classのみが含まれます。NBからデプロイする場合、ビルドディレクトリにはServiceBean2.class と serviceBean.class が含まれています。この幽霊を取り除くにはどうすればよいですか?
この問題のバリエーションを再現することができました。NetBeansコンパイルキャッシュをクリアする必要がありました(大文字と小文字を区別するOSで問題があるようです...)
私が遭遇した問題を回避するために、私はしなければなりませんでした:
サーバーを停止します
プロジェクトをきれいにする
NetBeansを停止する
%HOME%.netbeans \ 6.9 \ var \ cacheを削除します
NetBeansを起動します
問題のあるプロジェクトを実行すると、NetBeansはプロジェクトを再コンパイルし、サーバーを起動して、index.xhtmlを開きました。その後、アプリをうまくナビゲートすることができました。
問題を追跡するためにhttp://netbeans.org/bugzilla/show_bug.cgi?id=198565を開きました。その問題を監視し、問題を解決しようとする誰かを助けると思われる情報を追加してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加