【问题标题】:javax.enterprise.inject.Vetoed Open web beans, which jar?javax.enterprise.inject.Vetoed 打开web beans,哪个jar?
【发布时间】:2026-01-19 11:10:02
【问题描述】:

我想试用 Open Web Beans 1.6.2,但它在其网站上列出的用于向 Java SE 应用程序添加 CDI 支持的 jars

openwebbeans-spi.jar
openwebbeans-impl.jar
geronimo-jcdi_1.0_spec.jar
geronimo-atinject_1.0_spec.jar
geronimo-interceptor_1.2_spec.jar
geronimo-annotation_1.2_spec.jar

似乎不包含 javax.enterprise.inject.Vetoed 注释,我不得不添加 cdi-api 1.2 作为依赖项来解决问题,但我不确定这是否正确,因为所有其他 CDI 依赖项都已解决由上述?这是我的 pom 中的依赖项,是否正确?

    <dependency>
        <groupId>org.apache.openwebbeans</groupId>
        <artifactId>openwebbeans-impl</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openwebbeans</groupId>
        <artifactId>openwebbeans-spi</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jcdi_1.0_spec</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-atinject_1.0_spec</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-interceptor_1.2_spec</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-annotation_1.2_spec</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.2</version>
    </dependency>

这个link 似乎暗示在 Open Web Beans 1.5.0 中添加了对 @Vetoed 的支持

【问题讨论】:

    标签: java maven cdi openwebbeans


    【解决方案1】:

    请将geronimo-jcdi_1.0_spec升级到jcdi_1.1版本

    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jcdi_1.1_spec</artifactId>
      <version>1.0</version>
    </dependency>
    

    虽然你的问题很奇怪,因为你还有以下条目:

    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.2</version>
    </dependency
    

    其中还包含@Vetoed,因此应该足够了。 maven 会以某种方式忽略它吗?

    【讨论】:

    • 非常感谢,不,我添加了 cdi-api,因为我不知道丢失的资源可能在哪里。我现在已将其删除并更改为 jcdi 的 1.1,它似乎可以正常工作,非常感谢!