2013-05-12 19 views
6

Tomcatサーバーにwarファイルをデプロイできません。私は以下の例外で終わります。com.sun.faces.config.InitFacesContext.cleanupInitMapsのNullpointer例外

SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/BatchApp-1.0.0.M1]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
    at com.sun.faces.config.InitFacesContext.cleanupInitMaps(InitFacesContext.java:281) 
    at com.sun.faces.config.InitFacesContext.<init>(InitFacesContext.java:107) 
    at com.sun.faces.config.FacesInitializer.onStartup(FacesInitializer.java:115) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5280) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 11 more 

May 11, 2013 5:28:05 PM org.apache.catalina.startup.HostConfig deployWAR 
SEVERE: Error deploying web application archive C:\AppDev\Tomcat7.0\webapps\BatchApp-1.0.0.M1.war 
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/BatchApp-1.0.0.M1]] 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

私はさらにそれをデバッグし、私が返されるNULLポインタで終わるのですcom.sun.faces.config.InitFacesContextで以下のコード@getInitContextServletContextMapで()メソッドのように見えます。

static Map getInitContextServletContextMap() { 
    ConcurrentHashMap initContextServletContext = null; 
    try { 
     Field initContextMap = FacesContext.class.getDeclaredField("initContextServletContext"); 
     initContextMap.setAccessible(true); 
     initContextServletContext = (ConcurrentHashMap)initContextMap.get(null); 
    } catch (Exception e) { 
     if (LOGGER.isLoggable(Level.FINEST)) { 
      LOGGER.log(Level.FINEST, "Unable to get (init context, servlet context) map", e); 
     } 
    } 
    return initContextServletContext; 
} 

サーバが「initContextServletContext」を探していますが、どこにこれを設定することをクリアされていますか?

この問題を解決する方法を教えてください。

+0

http://www.christophbrill.de/?q=node/30が該当する可能性があります。 –

+0

彼らは何の解決策も提供しませんでした。 – Kodaganti

+0

解決策はページに記載されています:クラスパス上の複数のJSF API。 – egore911

答えて

8

全く同じエラーがありました。私はOracleのJSF実装(2.2.1)を使用していましたが、私のMaven依存関係の1つがApache MyFacesを利用していました。

表示されるコードスニペットは、Oracleの実装であり、FacesContextの静的なプライベートフィールドにアクセスしようとしています。しかし、クラスローダーは、そのフィールドを持たないFacesContextのMyFaces実装をロードしました。したがってbarf。

あなたの依存関係を確認してください。 JSFの2つの異なるバージョンまたは2つの異なる実装があることがわかります。

+0

ありがとうございます。私のために働いた。 –

+0

ここでは、クラスパス上にMojarra JSF 2.2とjsf-api 2.0が混在していることが原因です。 –

関連する問題