You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下使用Randoop生成测试时myJar.jar不存在的问题求助

解决Randoop --testjar参数找不到target目录下jar包的问题

问题重现

在搭载OpenJDK 17的Ubuntu系统中执行命令:

java -classpath Randoop/randoop-all-4.3.2.jar:./target randoop.main.Main gentests --testjar=myJar.jar

或修改classpath后执行:

java -classpath Randoop/randoop-all-4.3.2.jar:target randoop.main.Main gentests --testjar=myJar.jar

均出现错误:

Randoop for Java version 4.3.2.
Error while reading jar file myJar: myJar (No such file or directory).

待测试的myJar.jar实际存在于target目录中。

解决方案

--testjar参数需要指定jar文件的完整相对路径或绝对路径,而非仅文件名,因为Randoop不会自动从classpath中查找该jar文件。执行以下任意命令即可解决:

  • 使用相对路径指定target目录下的jar:

    java -classpath Randoop/randoop-all-4.3.2.jar:./target randoop.main.Main gentests --testjar=./target/myJar.jar
    

    或省略./:

    java -classpath Randoop/randoop-all-4.3.2.jar:target randoop.main.Main gentests --testjar=target/myJar.jar
    
  • 使用绝对路径(替换/path/to/your/project为你的项目实际路径):

    java -classpath Randoop/randoop-all-4.3.2.jar:/path/to/your/project/target randoop.main.Main gentests --testjar=/path/to/your/project/target/myJar.jar
    

原因说明

classpath的作用是让JVM加载Randoop自身的类以及待测试jar中的类,但--testjar参数是明确告诉Randoop要读取哪个jar文件来生成测试用例,该参数不依赖JVM的classpath查找机制。仅写myJar.jar时,Randoop会在当前工作目录下查找,而非target目录,因此出现找不到文件的错误。

内容的提问来源于stack exchange,提问作者Saverio Mirko Viola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:30:08