Java SonarQube:注册符号:';a';在同一范围内两次

Java SonarQube:注册符号:';a';在同一范围内两次,java,sonarqube,Java,Sonarqube,我正在将Sonar集成到我们的一个Java项目中,遇到了我以前从未遇到过的奇怪错误: ERROR: Unable to create symbol table for : src/main/java/.../Challenge.java java.lang.IllegalStateException: Registering symbol: 'a' twice in the same scope 服务器是SonarQube 5.6.6(安装了SonarJava插件4.8.0.9441),代

我正在将Sonar集成到我们的一个Java项目中,遇到了我以前从未遇到过的奇怪错误:

 ERROR: Unable to create symbol table for : src/main/java/.../Challenge.java
 java.lang.IllegalStateException: Registering symbol: 'a' twice in the same scope
服务器是SonarQube 5.6.6(安装了SonarJava插件4.8.0.9441),代码是用Java 1.6编译的,Java 1.8用于SonarQube扫描仪2.7。该项目中大约有2000个*.java源文件,在分析少数文件时会发生此错误。导致此错误的某些文件如下所示:

import com.isprint.accessmatrix.serviceapi.ServicePreAutheResult;

public class Challenge {
    private final ServicePreAutheResult preAuthResult;

    Challenge(ServicePreAutheResult preAuthResult) {
        this.preAuthResult = preAuthResult;
    }

    ServicePreAutheResult getPreAuthResult() {
        return preAuthResult;
    }
}
对于某些文件,此错误会导致分析失败并中止,而在某些其他情况下,则会继续分析并成功上载结果


到目前为止,我只能通过排除有问题的文件来解决这个问题。如果有更好的解决方案,我们将不胜感激。

当同一作用域中的两个符号具有相同的名称(在本例中为“a”)时,会出现此错误,正如您所指出的,它似乎不会发生在源代码中(不会编译),因此可能来自字节码


问题来自一个类,该类通过质询代码编译和使用(直接或间接)。这里的问题并不直接存在于质询类中:在该类使用的字节码中的某个地方,有一个名为“a”的符号,它在同一范围内定义了两次(范围是程序中名称有效的区域、方法、块、类)

Java analyzer的版本是什么?您的依赖项或字节码编织中是否存在任何混淆?当同一范围内的两个符号具有相同的名称(在本例中为“a”)时,会出现此错误,正如您指出的,源代码中似乎没有出现此错误(不会编译),因此可能来自字节码。使用了sonar scanner 2.7,我不知道有任何混淆。您是否建议排除某些依赖项可以解决此问题?顺便问一下:上面Challenge.java类中的“scope”和“a”是什么?这是scanner版本。服务器上安装的SonarJava analyzer的版本是什么?问题来自一个类,该类通过质询代码编译和使用(直接或间接)。这里的问题并不直接存在于质询类中:在该类使用的字节码中的某个地方,有一个名为“a”的符号,它在同一范围内定义了两次(范围是程序中名称有效的区域、方法、块、类)我用安装在服务器上的SonarJava插件版本4.8.0.9441更新了这个问题。感谢您的解释,我将更仔细地查看该类的依赖关系……您应该将您的评论放入答案中,然后我可以接受;)你是对的,问题实际上来自一个包含模糊代码的二进制文件。排除该JAR文件后,错误就消失了。