我有点坚持这一点。我无法编译,因为 java 声称找不到该方法setRepository()
,该方法是为以下代码中的抽象类定义的Repository
:
public abstract class Repository {
private static org.apache.bcel.util.Repository _repository = SyntheticRepository.getInstance();
/** Set repository instance to be used for class loading
*/
public static void setRepository( org.apache.bcel.util.Repository rep ) {
_repository = rep;
}
/** Clear the repository.
*/
public static void clearCache() {
_repository.clear();
}
}
请注意,clearCache 函数链接得很好......
这是尝试使用此功能的代码
public static void run(List<String> allClasses) {
Config config = Config.g();
ClassPath classpath = new ClassPath(config.outJar + File.pathSeparator + config.libJars);
SyntheticRepository repo = SyntheticRepository.getInstance(classpath);
org.apache.bcel.Repository.clearCache();
org.apache.bcel.Repository.setRepository((org.apache.bcel.util.Repository)repo);
请注意,有一个烦人的复杂情况,即在 BCEL 中既有一个抽象类 Repository,又有一个接口 Repository (org.apache.bcel.util.Repository)。我不知道这是否与问题有关。
完整的错误输出:
[javac] Compiling 1 source file to /Users/gestalt/code/stamp/droidrecord/droidrecord/instrumentor/classes
[javac] /Users/gestalt/code/stamp/droidrecord/droidrecord/instrumentor/src/edu/stanford/droidrecord/instrumentor/util/OutputVerifier.java:31: cannot find symbol
[javac] symbol : method setRepository(org.apache.bcel.util.Repository)
[javac] location: class org.apache.bcel.Repository
[javac] org.apache.bcel.Repository.setRepository(repo);
[javac] ^
[javac] 1 error
谢谢各位!