cancel
Showing results for 
Search instead for 
Did you mean: 

Why a DCs can't find a class at runtime?

Former Member
0 Kudos

Hi:

This is the scenario:

1- DC java - have 2 public parts:

JavaAssmbl (A)

JavaCompilation (C)

2- Dc library - have at used DCs the dc java's public part C, and its dependecy are at Runtime and build

3- DC webdynpro - have at used DCs the dc java's public part A, and its dependecy are at Runtime and build

Deploy all dcs.

I deploy de Webdynpro project (number 3) and everything its ok, the project is empty (don't use any class of the DC number 1). When I add some kind of code to instantiate a class at DC 1 FROM the Webdynpro DC (number 3) I have at runtime this exception:

com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Failed to create delegate for view com.repsolypf.gct.mantenimiento.roles.MantenimientoRolesView. (Hint: Is the corresponding DC deployed correctly? Does the DC contain the component?)

at com.sap.tc.webdynpro.progmodel.generation.ControllerHelper.createDelegate(ControllerHelper.java:110)

at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.(DelegatingView.java:41)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.createUninitializedView(ViewManager.java:657)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:694)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.bindRoot(ViewManager.java:579)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.init(ViewManager.java:155)

at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.doOpen(WebDynproWindow.java:295)

at com.sap.tc.webdynpro.clientserver.window.ApplicationWindow.show(ApplicationWindow.java:183)

at com.sap.tc.webdynpro.clientserver.window.ApplicationWindow.open(ApplicationWindow.java:178)

at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.init(ClientApplication.java:364)

at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.initApplication(ApplicationSession.java:748)

at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:283)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:713)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:666)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)

at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doGet(DispatcherServlet.java:46)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

Caused by: java.lang.reflect.InvocationTargetException

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:274)

at com.sap.tc.webdynpro.progmodel.generation.ControllerHelper.createDelegate(ControllerHelper.java:74)

... 33 more

Caused by: java.lang.NoClassDefFoundError: com/repsolypf/gct/beans/GCTCommandBean

at com.repsolypf.gct.mantenimiento.roles.wdp.InternalMantenimientoRolesView.(InternalMantenimientoRolesView.java:95)**

... 38 more

so.....I have the DC java deployed...all the publics parts decalered....but...it can't find it. The code is at the init method so can't instantiate the iview.

What is missing? I really can't realize why the class can't be found.

Thanks a lot for your time on this thread.

Rocío.

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

It got fix with my last post.

Now I have a problem between Library DC and EJB DC. New Error: NoClassDefFoundError (other post)

Former Member
0 Kudos

I recommend to read this SAP Note: 798872 Helps me to be sure that how it works it the correct way.

New thread status:

WD DC with a Java DC works OK

now I need the Java DC with library DC, the same error.

SAP Note:

Java DC = financials/app

.....You may also create an at-run-time reference between the DCs

"financials/app" and "tax/lib".

But this currently only serves as documentation because technology

specific runtime references are not automatically generated for

J2EE applications.

In order to make sure that the classloader finds classes from

"tax/lib" in referenced by "financials/app" you have to manually

add a library reference to the application-j2ee-engine.xml using

the J2EE toolset of the Developer Studio.

Rocío.

Edited by: Rocío Lorena Suárez on Dec 21, 2007 12:14 PM

Former Member
0 Kudos

YOu may have already done this, but have you setup the reference to the deployed library in the WD application? See this help page for information on setting up references:

http://help.sap.com/saphelp_nw70/helpdata/en/f9/ce747474574fdb8a79fed77ea075f8/frameset.htm

In your case, you want to setup a 'Library Reference'

Regarding your Library DC, the Library DC should have a usage relationship to the asembly public part of the external library, not the compilation part.

To check that your library is deployed correctly, use the VA and see if you can see your deployed library. If the library is there, then go the Class Loader Viewer and find your web dynpro application - ensure that the dependency tree shows both your web dynpro application, and the deployed library. If the library does not show up, then you've either deployed the library incorrectly, or the dependency is not there.

Hopefully that gets you back on track.

Former Member
0 Kudos

Hi Ken:

Thanks for answering.

What you said was done before posting and works, but all the documentation and examples that I read about DC intercommunication said that the communication between DCs have to be with the publics parts and adding as "Used DC".

The reference that you said can be done working with DCs projects or working with just WD projects, if I do that the DCs configurations about public parts and used dcs are taking in count only at design time (at runtime I get the error)...and I think that something is missing or not working fine....

See the example of this documentation

Thanks a lot for your time.

Rocío.