【问题标题】:Using @PostConstruct or @PreDestroy in Java11 module在 Java11 模块中使用 @PostConstruct 或 @PreDestroy
【发布时间】:2019-12-16 04:20: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.annotation-api-1.3.2.jar 包含在META-INF/MANIFEST.MF 这一行:

Automatic-Module-Name: java.annotation

因此,我尝试将其添加到我的 module-info.java 文件中:

  requires java.annotation;

但是,我收到此导入错误:

import javax.annotation.PostConstruct;

错误信息是:

The type javax.annotation.PostConstruct is not accessible

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

【问题讨论】:

  • 错误是来自 Eclipse 编译器还是 Maven?
  • 我无法在 Eclipse 2019-06 (4.12) 中重现此问题。你用的是哪个版本?
  • 是的,Eclipse 2019-06 中出现错误。是否已经有可用的修复程序?
  • 似乎 Eclipse 2019-06 中的 Java 模块支持相当有问题。因此,如果您的模块中有一些编译错误,那么您还会收到其他幻像错误作为副作用。

标签: java eclipse maven java-11 java-module


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多