2013-10-17 103 views
2

我目前使用的是Primefaces 4.0,Omnifaces 1.6.2,MyFaces 2.1.12和Google App Engine 1.8.3。Omnifaces 1.6.2和Google App Engine

当部署应用程序,我得到以下错误:

java.lang.NoClassDefFoundError: javax.naming.InitialContext is a restricted class. Please see the Google App Engine developer's guide for more details. 
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51) 
    at org.omnifaces.util.JNDI.lookup(JNDI.java:82) 
    at org.omnifaces.config.BeanManager.init(BeanManager.java:68) 
    at org.omnifaces.config.BeanManager.getReference(BeanManager.java:107) 
    at org.omnifaces.application.OmniApplication.createConverter(OmniApplication.java:86) 
    at org.primefaces.config.ConfigContainer.initConfig(ConfigContainer.java:69) 
    at org.primefaces.config.ConfigContainer.<init>(ConfigContainer.java:59) 

是否有可能禁用CDI功能/ JNDI查找在Omnifaces在启动?

我在Omnifaces 1.6.0中没有这个问题。

在此先感谢,

拉斐尔。

+0

Geez。看着它。 – BalusC

+0

请尝试1.6.3快照:https://code.google.com/p/omnifaces/issues/detail?id=263 – BalusC

+0

非常感谢BalusC。 我试过1.6.3快照,现在它按预期工作。 – rmart

回答

1

此问题已在OmniFaces中修复1.6.3。当JNDI(和CDI)在运行时类路径中不可用时,解决方案就会快速且无声地失败。

try { 
    Class.forName("javax.enterprise.inject.spi.BeanManager"); // Is CDI present? 
    Class.forName("javax.naming.InitialContext"); // Is JNDI present? (not on Google App Engine) 
} 
catch (Throwable ignore) { 
    return; // CDI or JNDI not supported on this environment. 
} 

// ...