我正在使用Guava-05-snapshot,使用Sun的JDK 1.6代码会破坏执行此代码段:
List<String> badpasswords = Lists.newArrayList( Password.badWords);
Collections.sort(badpasswords);
ImmutableList<String> tmp = ImmutableList.copyOf(badpasswords);
Run Code Online (Sandbox Code Playgroud)
特别是在ImmutableList.copyOf()调用上.此代码使用旧的Google-Collections代码已经工作了几个月.
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;
Run Code Online (Sandbox Code Playgroud)
这Password.badWords是一个ImmutableSet<String>和可写数组的创建和排序工作完美.但尝试将阵列转换为ImmutableList失败.
Kev*_*ion 45
Guava是Google Collections的完全兼容超集 - 我们没有以不兼容的方式更改任何内容.(这是通过对最新的番石榴罐运行整个Google Collections测试套件(这是广泛的)来测试的.)
我相信你有一个google-collect的副本 - *.jar仍然会进入你的类路径.显式,或者因为其他jar包含它而不重新打包它.你只需要找到并删除它.
在Google Collections中,有一种ImmutableList.copyOf(Iterable)方法,并且没有公共ImmutableList.copyOf(Collection)方法.哪个没问题,因为集合也是可迭代的.在Guava中,我们添加了Collection重载.这是完全兼容的,因为用于编译的所有源仍然可以,并且先前编译的任何源将仍然引用原始方法.
如果您针对Guava进行编译但是针对Google Collections运行,则会出现此问题.我相信这很可能发生了什么.
| 归档时间: |
|
| 查看次数: |
19811 次 |
| 最近记录: |