2013-05-12 3 views
6

पर Nullpointer अपवाद मैं अपनी युद्ध फ़ाइल को tomcat सर्वर में तैनात करने में सक्षम नहीं हूं। मैं नीचे अपवाद के साथ समाप्त हो रहा हूँ।com.sun.faces.config.InitFacesContext.cleanupInitMaps

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) 

मैं आगे यह डिबग और नीचे दिए गए कोड @getInitContextServletContextMap com.sun.faces.config.InitFacesContext में() विधि मैं नल पॉइंटर लौटाए जाने के साथ समाप्त कर रहा हूँ पर की तरह दिखता है।

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

पृष्ठ पर समाधान कहा गया है: कक्षापथ पर एक से अधिक जेएसएफ एपीआई। – egore911

उत्तर

8

एक ही त्रुटि थी। यह एक निर्भरता मुद्दा था: मैं जेएसएफ (2.2.1) के ओरेकल के कार्यान्वयन का उपयोग कर रहा था, लेकिन मेरी मावेन निर्भरताओं में से एक अपाचे माईफेस में खींच रहा था।

क्या हुआ यह है कि आपके द्वारा दिखाए गए कोड स्निपेट, जो ओरेकल इम्प्लेमेंटेशन से है, FacesContext के एक स्थिर निजी क्षेत्र तक पहुंचने का प्रयास करता है। लेकिन क्लासलोडर ने फेससेन्टेक्स्ट के माईफैस कार्यान्वयन को लोड किया है, जिसमें उस क्षेत्र में नहीं है। इसलिए बारफ।

अपनी निर्भरताओं की जांच करें। मुझे यकीन है कि आप पाएंगे कि आपके पास जेएसएफ के दो अलग-अलग संस्करण या दो अलग-अलग कार्यान्वयन हैं।

+0

धन्यवाद। मेरे लिए काम किया –

+0

हमारे मामले में, यह क्लासपाथ पर मोजाररा जेएसएफ 2.2 और जेएसएफ-एपीआई 2.0 के मिश्रण की उपस्थिति के कारण हुआ था। –