私はバイオインフォマティクス用の Java ツールであるGATKを使用しています。内部で org.reflections.Reflections を使用して、いくつかのプラグインをロードします。
私のプラグインはコンパイルされましたが、クラスパスにあり、同様のツールが問題なく動作していたときに GATK によって検出/ロードされませんでした。コードの一部を削除することで、問題を次の行に絞り込みました。これが問題の原因でした ( filterを参照)。
(...)
ctx.getAlleles().stream().filter(T->!(T.isSymbolic() || T.isNoCall())).mapToInt(new ToIntFunction<Allele>() {
public int applyAsInt(Allele value) {return value.length();};
});
(...)
上記の行を次のように変更すると、プラグインがロードされます。
(...)
ctx.getAlleles().stream().mapToInt(new ToIntFunction<Allele>() {
public int applyAsInt(Allele value) {return value.length();};
});
(...)
行が次の場合にもロードされます。
final Predicate<Allele> afilter = new Predicate<Allele>() {
@Override
public boolean test(Allele a) {
return !(a.isNoCall() || a.isSymbolic());
}
};
ctx.getAlleles().stream().filter(afilter).mapToInt(new ToIntFunction<Allele>() {
public int applyAsInt(Allele value) {return value.length();};
});
なぜ ?