2013-07-23 3 views
1

ejb가 포함 된 WebLogic에서 실행중인 귀가 있습니다. ejb가 우리 자신의 클래스 중 하나 인 ServiceFactory의 객체를 인스턴스화하려고 시도 할 때까지 모두 잘 실행됩니다.NoClassDefFoundError : 응용 프로그램 서버에서 클래스를 인스턴스화 할 수 없으며 로컬에서 올바르게 작동합니다.

내 단위 테스트에서 클래스의 개체를 로컬로 만들 수있었습니다. 서버에 오류가 발생했습니다.

이 문제는 빌드/패키징 문제이거나 WebLogic 10.3.6 버젼이지만 추측 할 수없는 경우 (APP-INF/lib의 경우) 귀중한 부분이있는 경우 여기서부터 진행해야합니다. 또한 클래스를 포함하는 종속성을 귀의 루트로 이동하려고 시도했습니다. "Class-Path :"는 ejb와 ear에 대한 MANIFEST.MF 파일에서 비어 있지만 제품은 지금까지는 아무런 문제없이 실행되었습니다. 나는 Maven으로 건물을 짓고있다.

javax.ejb.EJBException: what do i do: seems an odd quirk of the EJB spec. The exception is:java.lang.NoClassDefFoundError: Could not initialize class com.company.ts.management.icm.service.ServiceFactory 
at com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:110) 
at com.company.it.techservices.aae.service.CommonService.bizLog(CommonService.java:37) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) 
at com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:68) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.oracle.pitchfork.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:34) 
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54) 
at com.oracle.pitchfork.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:42) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
at com.sun.proxy.$Proxy476.calculateRoles(Unknown Source) 
at com.company.it.techservices.aae.autheng.AuthorizationEngineBean_t79b4w_AuthorizationEngineBeanRemoteImpl.__WL_invoke(Unknown Source) 
at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40) 
at com.company.it.techservices.aae.autheng.AuthorizationEngineBean_t79b4w_AuthorizationEngineBeanRemoteImpl.calculateRoles(Unknown Source) 
at com.company.it.techservices.aae.autheng.AuthorizationEngineBean_t79b4w_AuthorizationEngineBeanRemoteImpl_WLSkel.invoke(Unknown Source) 
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667) 
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230) 
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522) 
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363) 
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146) 
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518) 
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118) 
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) 
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) 

답변

3

일반적으로 NoClassDefFoundError은 클래스가 발견되었지만 초기화 할 수 없음을 의미합니다. 따라서 해당 클래스의 코드에서 인스턴스화 될 때 오류가 발생합니다 (다른 클래스가 완전히 누락되었음을 의미 할 수 있음).

클래스의 코드를 확인하십시오. 특히 ClassLoader에서 찾을 수없는 클래스를 사용하는 정적 블록이나 멤버를 찾습니다.

+0

하지만 정말 실종 된 부분이 있다면 동일한 클래스를 로컬에서 인스턴스화하는 방법은 무엇입니까? 아침에이 의존성을 살펴보고 그것이 필요한 모든 것이 있는지 확인합니다. – TenLeftFingers

+0

문제의 원인을 해결하기 때문에이 대답을 수락합니다. Maven 종속성과 경로 차이가 로컬에서 실행되는 것을 허용한다고 생각합니다. – TenLeftFingers

1

제 경우에는 No make가 파일에 ear 파일을 포함하지 않았기 때문에 NoClassDefFoundError가 발생했습니다. 따라서 jboss가 파일을로드해야 할 때 클래스 파일이 없어졌습니다. make 파일을 수정했고 더 이상 문제가 없었습니다.