我们有一个基于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文件。
答案 0 :(得分:0)
JBoss已经提供了库,因此您应该将范围更改为提供的。如果您想使用JBoss中的所有库,您可以添加依赖项:
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<type>pom</type>
</dependency>