java.lang.ClassNotFoundException:javax.enterprise.event.Event

时间:2015-11-26 10:37:49

标签: maven java-ee jax-rs cdi wildfly

将Java EE应用程序部署到WildFly时遇到问题 我尝试了不同的方式。

我通过maven archetype创建了java应用程序(wildfly-javaee7-webapp-ear-archetype) 并尝试通过Idea(和管理控制台)运行Wildfy,但得到了错误部署:

Cannot upload deployment: {"WFLYCTL0080: Failed services" => {"jboss.deployment.subunit.\"dtest-ear.ear\".\"dtest-ejb.jar\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"dtest-ear.ear\".\"dtest-ejb.jar\".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of subdeployment \"dtest-ejb.jar\" of deployment \"dtest-ear.ear\" Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class by.mass.service.MemberRegistration with ClassLoader ModuleClassLoader for Module \"deployment.dtest-ear.ear.dtest-ejb.jar:main\" from Service Module Loader Caused by: java.lang.NoClassDefFoundError: Ljavax/enterprise/event/Event; Caused by: java.lang.ClassNotFoundException: javax.enterprise.event.Event from [Module \"deployment.dtest-ear.ear.dtest-ejb.jar:main\" from Service Module Loader]"}}

在日志中:

ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.subunit."dtest-ear.ear"."dtest-ejb.jar".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."dtest-ear.ear"."dtest-ejb.jar".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of subdeployment "dtest-ejb.jar" of deployment "dtest-ear.ear"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:163)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class by.mass.service.MemberRegistration with ClassLoader ModuleClassLoader for Module "deployment.dtest-ear.ear.dtest-ejb.jar:main" from Service Module Loader
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:57)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:107)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:92)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:77)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156)
... 5 more
Caused by: java.lang.NoClassDefFoundError: Ljavax/enterprise/event/Event;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2575)
at java.lang.Class.getDeclaredFields(Class.java:1908)
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57)
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66)
... 10 more
Caused by: java.lang.ClassNotFoundException: javax.enterprise.event.Event from [Module "deployment.dtest-ear.ear.dtest-ejb.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
... 15 more

我不知道为什么cdi-api.jar不使用野生蝇罐。

<dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <scope>provided</scope>
    </dependency>

我删除了 - 提供。 (cdi-api.jar打包到app.ear) 并且应用程序将在Wildfly上运行。 但是在调用http://localhost:7001/dtest-web/rest/members之后我有ERROR,因为所有@Inject对象都为null。

ERROR [io.undertow.request] (default task-5) UT005023: Exception handling request to /dtest-web/rest/members: org.jboss.resteasy.spi.UnhandledException: java.lang.NullPointerException
at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:76)
at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:212)
at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:149)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:372)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

enter image description here

发生了什么事?任何人都可以拥有最小的REST + EJB示例吗?

@Path("/members")
@RequestScoped
public class MemberResourceRESTService {
@Inject
private Logger log;

@Inject
private Validator validator;

@Inject
private MemberRepository repository;

@Inject
MemberRegistration registration;

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Member> listAllMembers() {
    return repository.findAllOrderedByName();
}

@GET
@Path("/{id:[0-9][0-9]*}")
@Produces(MediaType.APPLICATION_JSON)
public Member lookupMemberById(@PathParam("id") long id) {
    Member member = repository.findById(id);
    if (member == null) {
        throw new WebApplicationException(Response.Status.NOT_FOUND);
    }
    return member;
}

1 个答案:

答案 0 :(得分:0)

似乎是部署的问题。

我无法直接解决您的问题,但最简单的解决方案可能是将部署模型从EAR更改为WAR存档。

PS。另外请确保您没有使用不稳定的WildFly版本。