我正在尝试从Scala调用Selenium Java库。我正在使用Scala IDE(Eclipse)和Scala 2.10.2。导致此编译器错误的原因是什么?
error while loading Function, class file '/Dev/selenium-2.35.0/libs/guava-
14.0.jar(com/google/common/base/Function.class)' is broken
(class java.lang.RuntimeException/bad constant pool index: 0 at pos: 479)
有时我通过添加更多的jar来修复损坏的类文件错误 - javac
不需要看到的jar,但显然scalac
。但是这种情况我不知道我能添加的其他罐子。
答案 0 :(得分:4)
找到答案。这是由https://code.google.com/p/guava-libraries/issues/detail?id=1095造成的。当我添加jsr305 jar时,错误消失了。
答案 1 :(得分:4)
我在尝试访问
时遇到同样的问题com.google.common.io.BaseEncoding.base64()
Eclipse声称base64成员不存在且Gradle构建 在问题中产生错误:
[ant:scalac] error: error while loading BaseEncoding, class file
'.../guava-16.0.jar(com/google/common/io/BaseEncoding.class)' is broken
错误是由可选依赖Guava's pom.xml中的某些注释引起的。如this answer中所述,Java编译器忽略 没有找到相应类文件的注释,但是Scala编译器 需要定义编译。
明确添加可选的依赖项应解决问题。
在这种特殊情况下,Guava's pom.xml具有以下可选依赖项,并将以下依赖项声明添加到项目中将解决问题:
摇篮:
compile 'com.google.code.findbugs:jsr305:2.0.2'
的Maven:
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>2.0.2</version>
</dependency>