5

これを尋ねる前に本当に多くの調査を行いましたが、何かが欠けているようです。ServiceLoader を実装しようとしたため、サンプル クラスを作成しました。

プロジェクトの構造

コードは簡単です:

testInterface.java

package com.test;

public interface testInterface {
    void test();
}

testImpl.java

package com.test;

public class testImpl implements testInterface {

    @Override
    public void test() {
        System.out.println("test");
    }

} 

Main.java

package com.test;

import java.util.ServiceLoader;

public class Main {

    public static void main(String[] args) {
        ServiceLoader<testInterface> serviceLoader = ServiceLoader.load(testInterface.class);

        serviceLoader.iterator().next().test();
    }

}

com.test.testInterface

com.test.testImpl

イテレータ部分で NoSuchElementException を取得し続けます。これは、実装がロードされなかったことを意味します。前もって感謝します。

4

1 に答える 1

9

META-INF/services/ を resources/ に置き、ソース フォルダーとして Eclipse プロジェクトに追加します。これは、コンパイル時に JAR ファイルに自動的に含まれます。

于 2015-10-29T22:51:21.187 に答える