0

私は Java の初心者であり、JSF、Spring、RichFaces などのフレームワークやテクノロジーに慣れるためにいくつかのチュートリアルに取り組んできました。私は MyEclipse を IDE として使用しており、http://www.ibm.com/developerworks/java/library/j-richfaces4/index.htmlで RichFaces+JSF2 に関する非常に優れた記事を見つけました。この質問の残りの部分は、上記のリンクに示されている RichFaces+JSF2 デモ プロジェクトを中心にしています。

ここで、J2EE 仕様レベル 5.0 または 6.0 を使用して MyEclipse で新しい Web プロジェクトを作成し、デモ プロジェクト ファイルをインポートすると、デモ プロジェクトが myeclipse tomcat にデプロイされ、localhost:8080/[project にアクセスすると正常に動作します。 -name]/index.jsf.

しかし、新しい Web プロジェクト (仕様レベルのいずれか) を作成し、maven サポート (標準または MyEclipse スタイル) を追加して、同じデモ プロジェクト ファイルを同様の方法でインポートすると、私の人生では取得できません。ウェブアプリが稼働しています。上記と同じ localhost URL を使用しています (そして新しいプロジェクトを参照しています)。展開エラー出力を以下に示します。

私は何が欠けていますか?


Jul 15, 2013 1:13:31 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Users\[username]\AppData\Local\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin;C:\Users\[username]\AppData\Local\MyEclipse\Common\plugins\com.genuitec.eclipse.easie.tomcat.myeclipse_9.0.0.me201211011550\tomcat\bin
Jul 15, 2013 1:13:31 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Jul 15, 2013 1:13:31 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 333 ms
Jul 15, 2013 1:13:31 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Jul 15, 2013 1:13:31 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.13
Jul 15, 2013 1:13:32 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Mojarra 2.1.3 (FCS 20110908) for context '/rf4jee6stdmvn'
Jul 15, 2013 1:13:51 PM com.sun.faces.config.ConfigureListener contextInitialized
SEVERE: Critical error during deployment: 
java.lang.NoSuchMethodError: com.google.common.base.Platform.precomputeCharMatcher(Lcom/google/common/base/CharMatcher;)Lcom/google/common/base/CharMatcher;
    at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:664)
    at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:71)
    at com.google.common.base.Splitter.on(Splitter.java:127)
    at org.richfaces.resource.ResourceLibraryFactoryImpl.<clinit>(ResourceLibraryFactoryImpl.java:43)
    at org.richfaces.application.DefaultModule.configure(DefaultModule.java:32)
    at org.richfaces.application.ServicesFactoryImpl.init(ServicesFactoryImpl.java:27)
    at org.richfaces.application.InitializationListener.createFactory(InitializationListener.java:139)
    at org.richfaces.application.InitializationListener.onStart(InitializationListener.java:112)
    at org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:157)
    at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
    at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2139)
    at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2115)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:300)
    at com.sun.faces.config.ConfigManager.publishPostConfigEvent(ConfigManager.java:600)
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:369)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:225)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Jul 15, 2013 1:13:51 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.RuntimeException: java.lang.NoSuchMethodError: com.google.common.base.Platform.precomputeCharMatcher(Lcom/google/common/base/CharMatcher;)Lcom/google/common/base/CharMatcher;
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:292)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Platform.precomputeCharMatcher(Lcom/google/common/base/CharMatcher;)Lcom/google/common/base/CharMatcher;
    at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:664)
    at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:71)
    at com.google.common.base.Splitter.on(Splitter.java:127)
    at org.richfaces.resource.ResourceLibraryFactoryImpl.<clinit>(ResourceLibraryFactoryImpl.java:43)
    at org.richfaces.application.DefaultModule.configure(DefaultModule.java:32)
    at org.richfaces.application.ServicesFactoryImpl.init(ServicesFactoryImpl.java:27)
    at org.richfaces.application.InitializationListener.createFactory(InitializationListener.java:139)
    at org.richfaces.application.InitializationListener.onStart(InitializationListener.java:112)
    at org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:157)
    at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
    at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2139)
    at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2115)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:300)
    at com.sun.faces.config.ConfigManager.publishPostConfigEvent(ConfigManager.java:600)
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:369)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:225)
    ... 24 more
Jul 15, 2013 1:13:51 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Jul 15, 2013 1:13:51 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/rf4jee6stdmvn] startup failed due to previous errors
Jul 15, 2013 1:13:51 PM com.sun.faces.lifecycle.ELResolverInitPhaseListener populateFacesELResolverForJsp
INFO: JSF1027: [null] The ELResolvers for JSF were not registered with the JSP container.
Jul 15, 2013 1:13:51 PM com.sun.faces.config.ConfigureListener contextDestroyed
SEVERE: Unexpected exception when attempting to tear down the Mojarra runtime
java.lang.NullPointerException
    at org.richfaces.application.CacheProvider.release(CacheProvider.java:96)
    at org.richfaces.application.ServicesFactoryImpl.release(ServicesFactoryImpl.java:18)
    at org.richfaces.application.ServiceTracker.release(ServiceTracker.java:132)
    at org.richfaces.application.InitializationListener.onStop(InitializationListener.java:147)
    at org.richfaces.application.InitializationListener.processEvent(InitializationListener.java:159)
    at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
    at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2139)
    at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2115)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:300)
    at com.sun.faces.config.ConfigureListener.contextDestroyed(ConfigureListener.java:332)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3866)
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4500)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Jul 15, 2013 1:13:52 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Jul 15, 2013 1:13:52 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Jul 15, 2013 1:13:52 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/15  config=null
Jul 15, 2013 1:13:52 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 20428 ms

アップデート

以下の回答とこの回答のおかげで、何が起こっているのかがわかりました。

Maven をサポートする myeclipse Web プロジェクトの Maven 依存関係の 1 つが問題の原因でした。そのため、その特定のjarの除外を作成しました。

<dependency>
    <groupId>org.jboss.weld</groupId>
    <artifactId>weld-osgi-bundle</artifactId>
    <version>1.0.1-SP3</version>
    <exclusions>
        <exclusion>
            <artifactId>google-collections</artifactId>
            <groupId>com.google.collections</groupId>
        </exclusion>
    </exclusions>
</dependency>

これが機能する理由は、richfaces デモ プロジェクトに既にグアバが含まれているためです。これは、この回答の下のコメントによると、実際には google-collections の新しいバージョンです。

また、プロジェクトの依存関係に変更を加えた後、Web アプリの単純なリロード/更新では、変更をプッシュするのに十分でない場合がありました。サーバーを停止し、Web アプリを削除し、サーバーを再起動して、アプリケーションを再デプロイする必要がありました。おそらく、これは Java や MyEclipse の標準的な方法、または私が行った特定の変更ですが、そうしなければならないとは思っていませんでした。

なんて痛い!しかし、それは学習経験でした。

4

1 に答える 1

2

これは、一部の Google のライブラリ、おそらくguavaまたはgoogle collectionの依存関係の競合です。これを修正するには、依存関係ツリーを調べる必要があります。myeclipse を使用しているので、pom.xml ファイルを開き、下のタブで依存関係階層ビューを選択します。次に、私が言った依存関係を検索します。さまざまな問題が発生する可能性があります。

  • それを必要とするアーティファクトの依存関係を除外しています。
  • Maven は新しい Google の依存関係との競合を解決していますが、このメソッドは古いメソッドにあり、使用しているサードパーティ ライブラリがそれを利用しています。この場合、サードパーティのライブラリを更新するか、自分で使用しているライブラリのバージョンをダウングレードしてください。
  • 一部のアーティファクトには、API 依存関係のバージョンと実装の他のバージョンを含めました。この場合、実行はこのメソッドを見つけることを期待していますが、実装では利用できません。

この関連する質問を見てください。

于 2013-07-15T19:44:28.830 に答える