我正在运行 TomEE+ 1.5.1 并尝试创建 CDI 扩展。我创建了一个实现javax.enterprise.inject.spi.Extension的类,并将该类名放入文件META-INF/services/javax.enterprise.inject.spi.Extension
类本身很简单:
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 列表中。
我不知道为什么会这样,我希望有人能帮助我。