当前位置: 首页 > 知识库问答 >
问题:

警告:未知枚举常量状态。稳定

澹台硕
2023-03-14

为了解决这个问题和以某种方式解决这个问题,我试图创建包来细分maintest类,然后利用带有添加模块的编译器来执行单元测试。这不是一个很好的方式,但现在只是一个假设的结构。

在我进一步讨论的过程中,有几个问题是:-

    < li >将基于JDK9的模块添加到项目中。 < li >使用IntelliJ的快捷方式将JUnit5添加到类路径中。(lib文件夹)[< code > JUnit-Jupiter-API-5 . 0 . 0 . jar ]

问:请注意,它将< code > opentest4j-1 . 0 . 0 . jar 带到lib/文件夹中。为什么会这样,另一个罐子是干什么用的?

>

  • 添加类并相应地生成一些测试方法。

    使用命令编译示例项目(共享只是为了绘制正在使用的目录结构的图片)

    javac --module-path lib -d "target" $(find src -name "*.java")
    

    结果为警告 -

    warning: unknown enum constant Status.STABLE   
      reason: class file for org.apiguardian.api.API$Status not found 
    warning: unknown enum constant Status.STABLE 
    2 warnings
    

    注:-

    我发现<code>junit-jupiter</code>的用法很可疑,因为如果我用junit注释掉代码并执行相同的命令,事情似乎运行得很好。

    使用的库/工具(如果可能重要):-

    • junit-jupiter-api-5.0.0
    • Java版本"9"(build 9 181)
    • IntelliJ2017.2.5

    Q、 这种警告的可能原因是什么?此外,我无法找到<code>API。状态在我的项目中以及项目类之外。

  • 共有2个答案

    林辰钊
    2023-03-14

    1) opentest4j

    opentest4jjunit-jupiter-api的传递依赖项。请参阅依赖关系图:

    +--- org.junit.jupiter:junit-jupiter-api:5.0.1
         +--- org.opentest4j:opentest4j:1.0.0
         \--- org.junit.platform:junit-platform-commons:1.0.1
    

    2) 未知枚举常量Status.STABLE

    您需要添加以下依赖项:apiguardian-api

    例如在Gradle中,您可以通过以下方式完成:

    dependencies {
        testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.1'
        testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.0.1'
        testCompileOnly 'org.apiguardian:apiguardian-api:1.0.0'
    }
    

    但总的来说,依赖关系是独立于构建工具的,所以你可以在普通的IDE中做到这一点,而无需Gradle或Maven。

    子车睿
    2023-03-14

    编译警告可以简单地忽略。此外,从<code>5.1.0</code>版本(目前正在开发中)开始,它将不再出现。所有这些都在发行说明中进行了说明:

    在5.0.1中,所有工件都被更改为在其发布的Maven POM中对@API Guardian JAR具有可选依赖性,而不是强制性依赖性。然而,尽管Java编译器应该忽略缺少的注释类型,但许多用户报告说,在类路径上没有@API Guardian JAR的情况下编译测试会导致javac发出如下警告:

    warning: unknown enum constant Status.STABLE
    reason: class file for org.apiguardian.api.API$Status not found
    

    为了避免混淆,JUnit团队决定再次强制依赖@API Guardian JAR。

    有关参考,另请参阅:

    • 删除 Maven POM 中对 apiguardian-api 的编译依赖性
    • 在 Maven POMs 中重新引入对 apiguardian-api 的编译依赖性
     类似资料:
    • 问题内容: 我正在查看公司其他部门维护的一些Java代码,顺便说一下,这是一些前C和C ++开发人员所维护的。普遍存在的一件事是使用静态整数常量,例如 除了缺少“最终”限定符外,这种代码也让我有些不安。我本来希望看到的是,从学校开始主要接受Java的培训,这会更像 但是,论点使我失望。为什么要比后者更好呢? 问题答案: 为什么要比后者更好呢? 这样做要好得多,因为它可以为您提供类型安全性并具有自记

    • 主要内容:声明常量,实例,VB.Net打印和显示常量,声明枚举,实例常量指的是程序在执行过程中可能不会改变的固定值。 这些固定值也被称为文字。 常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串文字。 也有枚举常量。 常量的处理方式与常规变量一样,只是它们的值在定义之后无法修改。 枚举是一组命名的整数常量。 声明常量 在VB.Net中,使用语句声明常量。 语句用于模块,类,结构,过程或块级别,以代替文字值。 语句的语法是: 其中, attribut

    • 问题内容: 通过阅读SCJP书籍,我在第1章“自测”中发现了类似的内容: 注意:代码编译正常。我不明白的是为什么我们可以从变量访问DOG,CAT或FISH常量。我认为(并且也写在书中)DOG,FISH,CAT是常量,其实现方式类似于。 所以,如果它们确实是静态的,为什么我们可以从中访问它们呢?最后一行是我熟悉的方式。 问题答案: 写作 和写作一样。也就是说,编译器将用其编译时类型Animal替换变

    • 问题内容: 尝试从数据库检索记录时,我得到了枚举类的“未知名称”值。使用JSF 2.0,JPA。 我的数据库中可能的值为“ F”或“ J” 枚举: 实体: 当我尝试从数据库读取记录时出现错误 您能帮我解决这个问题吗?谢谢 堆栈跟踪: javax.servlet.ServletException:枚举类br.com.aaa.xxx.entidade.TipoPessoa的未知名称值:F javax.

    • 问题内容: 有什么方法可以在Java枚举声明中定义静态最终变量(有效常量)? 我想要在一个地方定义BAR(1 … n)值的字符串文字值: 对于以上代码,我收到以下错误消息: 在定义字段之前无法引用它 。 问题答案: 正如IntelliJ IDEA建议的那样,在提取常量时-制作静态嵌套类。此方法有效:

    • 问题内容: Java中的静态和非静态枚举有什么区别?两种用法是相同的。 正确吗 所有静态的都在启动时加载到内存中,非静态的则按需加载 ? 如果是,那么哪种方法更好?将某些数据始终保留在内存中还是每次使用服务器资源加载它们? 问题答案: 所有的都是有效的。如果您有嵌套的枚举,则它与相同。 所有类都是延迟加载的(枚举或其他),但是在加载时,它们会一次全部加载。也就是说,您不能加载一些常量,而不能加载其