java.lang.NoClassDefFoundError:JBoss和JAAS上的javax / annotation / PostConstruct

时间:2018-01-11 08:27:41

标签: jboss guice jaas governator

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

在我们添加客户端提供的一些JAAS配置文件之前,这个应用程序在JBoss上没有任何问题。使用这些文件,应用程序无法启动并抛出此异常:

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文件。

1 个答案:

答案 0 :(得分:0)

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

    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <type>pom</type>
    </dependency>