2013-05-12 34 views
6

Tôi không thể triển khai tệp chiến tranh của mình vào máy chủ tomcat. Tôi kết thúc với ngoại lệ dưới đây.Ngoại lệ Nullpointer tại 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) 

tôi tiếp tục sửa lỗi nó và trông giống như ở phương pháp() code @getInitContextServletContextMap dưới đây trong com.sun.faces.config.InitFacesContext Tôi kết thúc với null pointer được trả lại.

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; 
} 

Máy chủ đang tìm kiếm "initContextServletContext" nhưng phải đặt ở đâu?

Vui lòng cho tôi biết cách tôi có thể giải quyết vấn đề này.

+0

http://www.christophbrill.de/?q=node/30 có thể có liên quan. –

+0

nope họ didnt cung cấp bất kỳ giải pháp. – Kodaganti

+0

Giải pháp được nêu trên trang: Nhiều hơn một API JSF trên đường dẫn lớp. – egore911

Trả lời

8

Đã xảy ra lỗi chính xác. Đó là một vấn đề phụ thuộc: Tôi đã sử dụng việc triển khai thực hiện JSF của Oracle (2.2.1), nhưng một trong những phụ thuộc Maven của tôi đã bị kéo vào Apache MyFaces.

Điều gì đã xảy ra là đoạn mã mà bạn hiển thị, là đoạn trích của Oracle, cố gắng truy cập một trường riêng tư tĩnh của FacesContext. Nhưng trình nạp lớp đã tải việc triển khai thực hiện MyFaces của FacesContext, không có trường đó. Vì vậy, barf.

Kiểm tra các phụ thuộc của bạn. Tôi đặt cược bạn sẽ thấy rằng bạn đã có hai phiên bản khác nhau hoặc hai triển khai khác nhau của JSF.

+0

Cảm ơn. Đã làm cho tôi. –

+0

Trong trường hợp của chúng tôi, nó được gây ra bởi sự hiện diện của một hỗn hợp của Mojarra JSF 2.2 và jsf-api 2.0 trên đường dẫn lớp. –

Các vấn đề liên quan