我正在尝试学习Java Path Finder(JPF)。我下载并构建了JPF。目前,我有 jpf-core 文件夹,其中包含示例.java文件以及它们相应的.jpf文件。我的目标是创建一个新的基本.java文件,并检查该文件中的特定值是否超过了我在.jpf文件中指定的最大限制。
示例文件夹中的是一个名为NumericValueCheck.java的.java文件,它正是我想要的文件,它可以按预期工作。 (当值超出界限时查找)
NumericValueCheck.java
public class NumericValueCheck {
public static void main (String[] args){
double someVariable;
someVariable = 42;
someVariable = 60;
}
}
NumericValueCheck.jpf
target = NumericValueCheck
listener = .listener.NumericValueChecker
# NumericValueChecker configuration
range.vars = 1
range.1.var = NumericValueCheck.main(java.lang.String[]):someVariable
range.1.min = 0
range.1.max = 42
但是,我创建了一个新的.java文件,并将其命名为“ BasicCheck.java ”。这是其中的代码;
public class BasicCheck {
public static void main(String[] args){
double result;
result = 60;
result = 110;
}
}
这是 BasicCheck.jpf 中的属性;
target = BasicCheck
listener = .listener.NumericValueChecker
# NumericValueChecker configuration
range.vars = 1
range.1.var = BasicCheck.main(java.lang.String[]):result
range.1.min = 0
range.1.max = 60
我在单独的目录中使用javac BasicCheck.java
编译了BasicCheck.java。然后,将“ BasicCheck.java”和“ BasicCheck.jpf”复制到jpf-core的 examples 文件夹中,其中NumericValueCheck.java和NumericValueCheck.jpf也在同一位置。我还将“ BasicCheck.class”复制到“ {NumericValueCheck.class””所在的jpf-core/build/examples
目录中。
但是,当我运行命令java -jar build/RunJPF.jar src/examples/BasicCheck.jpf
时,找不到任何错误。结果是“未检测到错误”。它应该检测到大于上限60的110。
为什么不起作用?我是否需要在我的新BasicCheck.java或BasicCheck.jpf中添加其他内容?
谢谢。
答案 0 :(得分:0)
经过长时间的努力,我找到了解决方案。解决方案很简单。
在目录jpf-core/src/examples
下放置 BasicCheck.java 和 BasicCheck.jpf 。
不使用javac
不编译为源代码。打开终端,然后从cd
到jpf-core
目录。然后键入以下命令:./gradlew buildJars
。
就是这样。现在,您可以使用命令java -jar build/RunJPF.jar src/examples/BasicCheck.jpf
运行Java Path Finder。