Java lang IllegalAccess通过HashBasedTable累加器收集Guava不可变表

时间:2016-08-24 00:03:43

标签: java java-8 guava collectors

执行以下代码时出错,

  

引起:java.lang.IllegalAccessError:试图访问类   来自班级

的com.google.common.collect.AbstractTable
 ImmutableTable.copyOf(listItemsToProcess.parallelStream()
                    .map(item ->
                            ProcessorInstanceProvider.getInstance()
                            .buildImmutableTable(item))
                    .collect(() -> HashBasedTable.create(),
                            HashBasedTable::putAll,

                            HashBasedTable<Integer, String,    
                            Boolean>::putAll)
                    );
  

出现错误 - HashBasedTable :: putAll使用Oracle的1.8 jre

2 个答案:

答案 0 :(得分:1)

AbstractTable是在Guava版本15中引入的。看看你的类路径配置;你可能在运行时使用了早期的库版本。

答案 1 :(得分:0)

有趣的是,我用Lambda表达式替换了方法引用并且它有效。

    ImmutableTable.copyOf(itemList.parallelStream()
                    .map(item ->
                            ProcessorInstanceProvider.get()
                            .buildImmutableTable(item))
                    .collect(() -> HashBasedTable.create(),
                            (a, b) -> a.putAll(b),
                            (a, b) -> a.putAll(b))
                    );