0

我们有一个基于 Guice 的 Web 应用程序,我们部署到 JBoss EAP 6.4.0。此应用程序使用 Netflix Governator 库,该库为 PostConstruct 注释提供支持。

这个应用程序在 JBoss 上启动没有任何问题,直到我们添加了一些客户端提供的 JAAS 配置文件。使用这些文件,应用程序不会启动并引发此异常:

JBWEB000287: Exception sending context initialized event to listener instance of class c.n.b.s.ServletContextListener: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct

我通过添加此依赖项解决了这个问题:

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

但我想知道这是否是正确的解决方案。我不熟悉 JBoss 或 JAAS,我想知道是否不应该以更好的方式修复它,例如在模块配置中。我不明白为什么我一直没有这个错误,但只有 JAAS XML 文件。

4

1 回答 1

0

JBoss 已经提供了该库,因此您应该将范围更改为提供。如果你想使用 JBoss 的所有库,你可以添加一个依赖:

    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <type>pom</type>
    </dependency>
于 2018-01-15T10:13:13.953 回答