Java CDI在合格的jaxrs资源类中不起作用

Java CDI在合格的jaxrs资源类中不起作用,java,jakarta-ee,jax-rs,cdi,Java,Jakarta Ee,Jax Rs,Cdi,编辑:我上传了一个。您可以使用mvn clean install构建,并在部署后打开以下URL: http://localhost:8080/jaxrs-测试/不合格->响应:Hello-there:de.test。SomeBean@........ http://localhost:8080/jaxrs-测试/合格->响应:Hello-there:null 使用openjdk11在wildfly-23.0.0.Final上测试 原始问题: 考虑以下类别: App.java-Jaxrs应用程序

编辑:我上传了一个。您可以使用
mvn clean install
构建,并在部署后打开以下URL:

http://localhost:8080/jaxrs-测试/不合格->响应:
Hello-there:de.test。SomeBean@........
http://localhost:8080/jaxrs-测试/合格->响应:
Hello-there:null

使用openjdk11在wildfly-23.0.0.Final上测试


原始问题:

考虑以下类别:

App.java-Jaxrs应用程序:

@ApplicationPath("/api")
public class App extends Application {
}
Q.java-限定符注释:

@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Q {
}
java—一些简单的类:

public class X {
    public String getX(){
        return "some x";
    }
}
java-jaxrs资源:

@Path("/foo")
@Q
public class Foo {

    @Inject
    private X test;

    @Path("bar")
    @GET
    public String getBar() {
        return test.getX();
    } 
}
pom包含以下依赖项(没有其他相关项):

导致空指针异常,因为Foo资源中的
test
为空。 当删除限定符注释时,
X
的请求和注入工作正常

为什么呢?我在文件中找不到任何提示。 有没有办法让CDI在合格的jaxrs资源类中工作


对于qualified,我指的是除
@命名
之外的任何限定符,因为后者不会阻止类获取限定符
@Default

,您可以显示stacktrace吗。您对错误的解释一定有问题。我只是好奇,但为什么您需要一个带有
@Qualifier
注释的JAX-RS端点???@aschoerk:除了纯默认的空指针异常之外,没有堆栈跟踪。请看我的编辑,我上传了一个最小的例子-你可以自己测试。@CarlitosWay:我需要一些技巧来“绕过”一些现有的端点。我最终解决了与装饰师的问题,但我仍然好奇我在这里做错了什么。
    <dependencies>
        <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
http://localhost:8080/app/api/foo/bar