【问题标题】:Checker framework cant resolve symbol<annotatedJdk>${org.checkerframework:jdk8:jar}</annotatedJdk> issueChecker 框架无法解决符号<annotatedJdk>${org.checkerframework:jdk8:jar}</annotatedJdk> 问题
【发布时间】:2018-05-14 17:44:27
【问题描述】:

我试图通过 Maven 存储库添加 Checker 框架,我遵循了检查器框架手册 steps 但我在 intelij ide 上遇到了这个错误

其他人在Google groups 上提到了同样的问题,请提供任何帮助

我的maven包是这样的

  <properties>
    <annotatedJdk>${org.checkerframework:jdk8:jar}</annotatedJdk>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>checker-qual</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>jdk8</artifactId>
        <version>2.5.1</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <compilerArguments>
              <Xmaxerrs>10000</Xmaxerrs>
              <Xmaxwarns>10000</Xmaxwarns>
            </compilerArguments>
            <annotationProcessorPaths>
              <path>
                <groupId>org.checkerframework</groupId>
                <artifactId>checker</artifactId>
                <version>2.5.1</version>
              </path>
            </annotationProcessorPaths>
            <annotationProcessors><annotationProcessor>org.checkerframework.checker.nullness.NullnessChecker</annotationProcessor>
            </annotationProcessors>
            <compilerArgs>
              <arg>-AprintErrorStack</arg>
              <arg>-Xbootclasspath/p:${annotatedJdk}</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <executions>
            <execution>
              <goals>
                <goal>properties</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>8</source>
                  <target>8</target>
              </configuration>
          </plugin>
      </plugins>
  </build>

如果错过任何步骤,请告诉我它也不允许删除错误的那一行

【问题讨论】:

  • 在文档中描述了您在第 2 步的两个步骤,但似乎缺少第 1 步...意味着在 pom 文件中添加适当的依赖项...
  • 你能给出一个可重现的测试用例或MWE吗?您只提供了部分 pom.xml 文件,没有源代码,也没有指明您运行的命令。这让您很难理解您的问题。
  • @mernst stackoverflow 不允许我在不写更多解释的情况下发布所有 POM,所以我裁剪了重要部分,另一个问题是我的代码运行没有任何错误,它只是显示这个“无法解决这个符号”问题当我尝试像method(int array @ArrayLen ( 9 )[]) - > method(new int[0]) 这样的东西时,它编译没有任何错误
  • 您可以提供一个指向包含所有代码的存储库的链接(最好在您开始更改它以运行 Checker Framework 之前使用一个分支,以及另一个显示您的工作的分支)。或者您可以链接到包含这些内容的 zip 文件。如果你不愿意展示你的完整代码,其他人就无法调试它(无论他们多么想帮助你)。
  • 整个项目在这里github link@mernst

标签: maven intellij-idea checker-framework


【解决方案1】:

假设项目是由 Maven 从命令行正确构建的,这看起来像 IntelliJ IDEA 突出显示问题:IDEA-129269/IDEA-187553

【讨论】:

    【解决方案2】:

    我能够避免这个问题的方法是声明属性如下:

    <checkerframework.version>2.5.6</checkerframework.version>
    <annotatedJdk>${settings.localRepository}/org/checkerframework/jdk8/${checkerframework.version}/jdk8-${checkerframework.version}.jar</annotatedJdk>
    

    然后重新导入 Maven 项目。

    另请注意,这样可能也不需要配置maven-dependency-plugin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2020-01-16
      • 2014-05-12
      • 2019-02-11
      • 1970-01-01
      • 2020-11-20
      • 2017-11-15
      相关资源
      最近更新 更多