前言
创作开始时间:2022年3月30日18:43:43
如题,这个还是走了些弯路的,所以这里简单记录一下。以供参考。
问题描述
- 我的maven项目是jdk 11 版本的
- defects4j 版本是v2.0,需要在jdk8下面运行!
因此,cmd怎么写就成了一个问题。
解决方案
错误版
本来想先列出一些错误尝试的,如下:
String cmd = String.format(
"cd ~/env;\n ./change-d4j-version.sh 8;\n cd %s; defects4j test -t %s\n",
Globals.buggyDir,
oriFailed.replace("#", "::"));
String output = CmdUtil.runCmd(cmd);
中间版
但是不想啰嗦了。直接上我目前能work的版本吧(实际上不是,还差了点):
String cmd = String.format(
"cd ~/env;\n ./change-d4j-version.sh 8;\n ./change-jdk-version.sh 8 && "
+ "export JAVA_HOME=\"/home/apr/env/jdk1.8.0_202/bin/\" && cd %s && java -version && defects4j test -t %s\n",
Globals.buggyDir,
oriFailed.replace("#", "::"));
String output = CmdUtil.runCmd(cmd);
export JAVA_HOME=\"/home/apr/env/jdk1.8.0_202/bin/\" 比较重要。
最终版(能够正常运行!)
2022年3月30日19:50:45 上面这个还是不能work。
还需要改一下java version
String cmd = String.format(
"cd ~/env;\n ./change-d4j-version.sh 8;\n"
+ "export JAVA_HOME=\"/home/apr/env/jdk1.8.0_202/\" "
+ "&& export PATH=\"$JAVA_HOME/bin/:$PATH\" "
+ "&& cd %s && java -version && defects4j test -t %s\n",
Globals.buggyDir,
oriFailed.replace("#", "::"));
String output = CmdUtil.runCmd(cmd);
关键是加了:export PATH=\"$JAVA_HOME/bin/:$PATH\
小结
遇到了一些问题,主要是比较难调试,为此还调试了defects4j 的ant 脚本以及project.pm文件。后面才慢慢找到问题。所以这里记录一下。
创作结束时间:2022年3月30日19:52:47
|