メモ:Java8 + WildFly8 で static method を 実装した interface で CDI エラーが出る の続き
メモ:Java8 + WildFly8 で static method を 実装した interface で CDI エラーが出る - お だ のスペース の続き。
最新の WELD-SE (2.2.0.SP1) でも発生したので、WildFly というよりは、WELD の問題のようです。
というわけで WELD のソースを見てみると怪しいところを発見しました。
core/impl/src/main/java/org/jboss/weld/bean/proxy/ProxyFactory.java at master · weld/core · GitHub の addMethodsFromClass のこの部分
for (Class<?> c : additionalInterfaces) { for (Method method : c.getMethods()) { try { MethodInformation methodInfo = new RuntimeMethodInformation(method); ClassMethod classMethod = proxyClassType.addMethod(method); createSpecialMethodBody(classMethod, methodInfo, staticConstructor); BeanLogger.LOG.addingMethodToProxy(method); } catch (DuplicateMemberException e) { } } }
ソース落としてビルドするガッツが無いので試していませんが、ここ static method を省くようにしたらいけるんじゃないかなー?
2014/05/01 追記:
次のバージョンでは直ってそうですね。
[WELD-1664] ProxyFactory fails with Java 8 interface static method - JBoss Issue Tracker