0

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 リストにあります。

なぜこれが起こっているのかわかりません。誰かが私を助けてくれることを願っています。

4

1 に答える 1