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

在Java11模块中使用@PostConstruct或@PreDestroy

通博实
2023-03-14

我正在为Java11实现一个模块,并希望使用JSR250中的注释(javax.annotation.PostConstruct和javax.annotation.PreDestroy)。

我已经更改了根据依赖项从:

    <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>jsr250-api</artifactId>
      <version>1.0</version>
    </dependency>

对此:

   <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>javax.annotation-api</artifactId>
      <version>1.3.2</version>
    </dependency>

这个工件javax。注释-api-1.3。2.jar包含在META-INF/MANIFEST中。MF此行:

Automatic-Module-Name: java.annotation

因此,我尝试将其添加到我的模块信息中。java文件:

  requires java.annotation;

但是,我得到了一个错误的导入:

import javax.annotation.PostConstruct;

错误消息是:

The type javax.annotation.PostConstruct is not accessible

我已经研究了以下相关问题,但仍无法解决我的问题:

  • 我不能在Java 11中使用@PostConstruct和@PostDestroy
  • Intellij:如何添加java。javax的注释模块。注释。PostConstruct(请注意,我正在使用Eclipse和JDK11,它不包含模块java.xml.ws.annotation

共有1个答案

简俊楚
2023-03-14

该错误仅在Eclipse中发生。事实证明,其他不相关的编译错误会在Eclipse中造成一些副作用。解决这些问题并刷新和清理项目后,所描述的错误神奇地消失了。特别感谢@howlger和@Naman为我指明了正确的方向。

 类似资料:
  • 问题内容: 使用JDK / 11 的早期访问版本来编译基于Java-9且使用VM参数的现有代码 解决HTTP / 2客户端孵化器模块的问题 现在以编译错误结束 找不到模块:jdk.incubator.httpclient Java版本详细信息: 问题答案: 通过HTTP客户端API的标准化,现在可以删除已孵化的API。 现在,标准API的模块名称和软件包名称将 用作- 另外,将所有依赖类路径的应用

  • 我将HiberNate与Panache一起使用,并且需要在应用程序启动时添加用户。为此,我使用注释我的bean,然后我有一个带有注释的方法。 目前,我正在使用以下代码: 据我发现,当调用此方法时,不能保证所有内容都已经设置好,我想这就是为什么它有时会失败并出现错误的原因。我已经检查过这个问题,但由于它是针对 Spring 的,因此该方法不起作用,我没有找到任何类似的东西 Quarkus。 我是否缺

  • 使用JDK/11的早期access构建编译基于Java-9的现有代码,该Java-9使用VM参数 解析HTTP/2客户端孵化器模块现在以编译错误告终 未找到模块:jdk。恒温箱httpclient Java版本详细信息:-

  • 我有以下代码: 我编译此文件时出错: 但是,删除内部模块并编译它本身包含的代码运行良好: 我错过了什么?如果模块位于单独的文件中,我会收到相同的错误: main.rs a.rs

  • 问题内容: 构造bean之后,我想使用EntityManager从数据库中检索数据。在构造函数中是不可能的,因为EntityManager是在调用构造函数之后注入的。所以我试图用@PostConstruct注释的方法来做。根据API,在完成所有注入后将调用PostConstruct方法。执行查询是可行的,但是它总是返回一个空列表。如果我在其他方法中使用相同的查询,它将返回正确的结果。有人知道,为什

  • 我试图在Mac OS上运行一个示例JavaFX应用程序。 Build.Gradle Java类 怎么啦?由于某种原因,JavaFX库没有正确加载。可能是MacOS或openjfx的错误吗?