Java路径查找器NumericValueChecker

时间:2018-11-27 08:06:31

标签: java pathfinder jpf

我正在尝试学习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中添加其他内容?

谢谢。

1 个答案:

答案 0 :(得分:0)

经过长时间的努力,我找到了解决方案。解决方案很简单。

在目录jpf-core/src/examples下放置 BasicCheck.java BasicCheck.jpf

不使用javac 编译为源代码。打开终端,然后从cdjpf-core目录。然后键入以下命令:./gradlew buildJars

就是这样。现在,您可以使用命令java -jar build/RunJPF.jar src/examples/BasicCheck.jpf运行Java Path Finder。