
Randoop 报错 “No such file or directory” 通常是因为 --testjar 指定的 JAR 路径未包含正确目录前缀,导致 Randoop 在当前工作目录下查找而非目标子目录。只需显式指定相对或绝对路径即可解决。
randoop 报错 “no such file or directory” 通常是因为 `--testjar` 指定的 jar 路径未包含正确目录前缀,导致 randoop 在当前工作目录下查找而非目标子目录。只需显式指定相对或绝对路径即可解决。
Randoop 的 --testjar 参数不会自动解析或补全路径,它严格按你提供的字符串去定位 JAR 文件。你在命令中写的是 --testjar=myJar.jar,Randoop 就会在当前工作目录(即执行命令时所在的目录) 下寻找名为 myJar.jar 的文件——而实际上该文件位于 ./target/ 子目录中,因此必然报错 No such file or directory。
✅ 正确做法是:显式写出完整的相对路径或绝对路径。例如:
java -classpath Randoop/randoop-all-4.3.2.jar:./target randoop.main.Main gentests --testjar=target/myJar.jar
注意两点关键修改:
- --testjar=target/myJar.jar(而非 --testjar=myJar.jar):明确告知 Randoop 从 target/ 目录下加载 JAR;
- -classpath 中保留 ./target 是为了确保被测类的依赖(如测试所需的辅助类)能被类加载器识别,但它不影响 --testjar 的路径解析——二者职责分离:-classpath 用于 Randoop 自身运行时依赖,--testjar 则专用于指定待生成测试的目标 JAR。
? 其他建议与验证步骤:
- 运行前先确认 JAR 确实存在:ls -l target/myJar.jar
- 若使用绝对路径更稳妥(尤其在 CI 或多环境场景):--testjar=/full/path/to/project/target/myJar.jar
- 避免路径中含空格或特殊字符;如有,需用引号包裹:--testjar="target/my app.jar"
- Randoop 4.3.2 及以上版本不支持通配符(如 target/*.jar),必须指定单个 JAR 文件。
? 总结:--testjar 是一个“字面量路径参数”,无隐式目录拼接逻辑。始终以当前工作目录为基准,检查并修正路径,即可快速排除此类 I/O 错误。











