2013-03-18 61 views
0

我运行TomEE + 1.5.1并尝试创建CDI扩展。我创建实施javax.enterprise.inject.spi.Extension一类,把这个类名到文件META-INF /服务/ javax.enterprise.inject.spi.ExtensionTomEE:CDI扩展 - 提供程序未找到错误

类本身很简单:

import java.util.HashSet; 
import java.util.Set; 

import javax.enterprise.event.Observes; 
import javax.enterprise.inject.spi.Extension; 
import javax.enterprise.inject.spi.ProcessAnnotatedType; 

public class ScanAllClassesExtension implements Extension { 

    private Set<Class<?>> allClasses; 

    public void handleProcessAnnotatedTypeEvent(@Observes ProcessAnnotatedType<?> processAnnotatedTypeEvent) throws Exception { 
     Class<?> type = processAnnotatedTypeEvent.getAnnotatedType().getJavaClass(); 
     getAllClasses().add(type); 
    } 

    public Set<Class<?>> getAllClasses() { 
     if (allClasses == null) { 
      allClasses = new HashSet<Class<?>>(); 
     } 
     return allClasses; 
    } 

} 

论TomEE部署我得到这个错误:

java.util.ServiceConfigurationError: javax.enterprise.inject.spi.Extension: Provider test.extensions.ScanAllClassesExtension not found 

在调试中OpenEJB的这个错误是由ClassNotFoundException异常造成的,而是在正确的道路位于类加载器的url列表中。

我不知道为什么会发生这种情况,我希望任何人都可以帮助我。

回答