Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 332390

Summary: RAP BIRT WEBVIEWER INVOKE ERROR
Product: z_Archived Reporter: Sudesh Bulathsinhala <sudeshb>
Component: BIRTAssignee: Zhiqiang Qian <zqian>
Status: VERIFIED FIXED QA Contact: Xiaoying Gu <bluesoldier>
Severity: normal    
Priority: P3 CC: bluesoldier, zqian
Version: unspecified   
Target Milestone: 3.7.0 M7   
Hardware: PC   
OS: Windows 7   
Whiteboard: Obsolete

Description Sudesh Bulathsinhala CLA 2010-12-12 06:57:37 EST
Build Identifier: 20100917-0705

when trying to invoke BIRT report using web viewer in RAP, following error gets generated..

!ENTRY org.eclipse.rap.ui 4 0 2010-12-07 13:09:48.374
!MESSAGE Unhandled event loop exception
!STACK 0

java.lang.NoClassDefFoundError: org/eclipse/birt/report/designer/ui/ReportPlugin
at org.eclipse.birt.report.viewer.utilities.ViewerClassPathHelp er.getWorkspaceClassPath(ViewerClassPathHelper.java:191)
at org.eclipse.birt.report.viewer.utilities.WebViewer.startWebA pp(WebViewer.java:756)
at org.eclipse.birt.report.viewer.utilities.WebViewer.display(W ebViewer.java:1004)
at org.eclipse.birt.report.viewer.utilities.WebViewer.display(W ebViewer.java:998)
at com.argos.sys.base.controller.birt.provider.CustomBirtReport Provider.decorateReportInBrowser(CustomBirtReportProvider.ja va:42)
at com.argos.sys.base.controller.widget.editor.CustomReportEdit orPart.invokeRunReport(CustomReportEditorPart.java:381)
at com.argos.sys.base.controller.widget.editor.CustomReportEdit orPart.access$1(CustomReportEditorPart.java:367)
at com.argos.sys.base.controller.widget.editor.CustomReportEdit orPart$5.handleEvent(CustomReportEditorPart.java:319)
at org.eclipse.swt.internal.widgets.UntypedEventAdapter.dispatc hEvent(UntypedEventAdapter.java:651)
at org.eclipse.swt.internal.widgets.UntypedEventAdapter.widgetS elected(UntypedEventAdapter.java:88)
at org.eclipse.swt.events.SelectionEvent.dispatchToObserver(Sel ectionEvent.java:194)
at org.eclipse.rwt.internal.events.Event.processEvent(Event.jav a:44)
at org.eclipse.swt.events.TypedEvent.processEvent(TypedEvent.ja va:161)
at org.eclipse.swt.events.TypedEvent.executeNext(TypedEvent.jav a:201)
at org.eclipse.swt.widgets.Display.runPendingMessages(Display.j ava:1100)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :1090)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2390)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2351)
at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:22 06)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:424)
at org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:332)
at org.eclipse.jface.internal.databinding.realmadapter.RealmAda pter.run(RealmAdapter.java:44)
at org.eclipse.rap.ui.internal.RealmAdapterHook.runWithDefault( RealmAdapterHook.java:48)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:427)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:157)
at com.argos.sys.client.entrypoint._rap.ClientEntryPoint.create UI(ClientEntryPoint.java:18)
at org.eclipse.rwt.internal.lifecycle.EntryPointManager.createU I(EntryPointManager.java:92)
at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWT LifeCycle.java:245)
at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadCont roller.run(RWTLifeCycle.java:114)
at java.lang.Thread.run(Unknown Source)
at org.eclipse.rwt.internal.lifecycle.UIThread.run(UIThread.jav a:102)
Caused by: java.lang.ClassNotFoundException: org.eclipse.birt.report.designer.ui.ReportPlugin
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInter nal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(Bund leLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(Bund leLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 31 more


This looks like a change that was introduced for designer classpath 
issues. In the WebViewer class there is a startWebApp method that adds 
urls to the cp based on the designer classpath:

try
{
// if don't load debug ui, viewer will handle to set workspace
// classpath
String debugMode = System.getProperty( REPORT_DEBUT_MODE );
if ( debugMode == null )
{
// get workspace classpath
URL[] urls = ViewerClassPathHelper.getWorkspaceClassPath( 
reportFileName );

if ( reloadableClassLoader == null )
{
// create ReloadableClassLoader
reloadableClassLoader = new ReloadableClassLoader( urls,
WebViewer.class.getClassLoader( ) );
}
else
{
// reload class
reloadableClassLoader.setUrls( urls );
reloadableClassLoader.reload( );
}
}

Jason Weathersby SUGGESTED ME A WORKAROUND AND IT'S WORKING. FIND BELOW NOTES PROVIDED BY HIM..

Can you try to set the debug mode to true?
System.setProperty( WebViewer.REPORT_DEBUT_MODE,true );
before calling your viewer code? Also it would be good if you could log 
a bug for this.



Jason

Reproducible: Always

Steps to Reproduce:
1. WebViewer on RAP [message #641634], under BIRT forum, you may find all the detail discussions and related. This happens when we try to invoke BIRT report in a webviewer component in RAP.
2.
3.
Comment 1 Ivan Furnadjiev CLA 2010-12-13 03:18:56 EST
This is more a BIRT issue than RAP. Move it to BIRT.
Comment 2 Zhiqiang Qian CLA 2011-01-20 01:34:05 EST
I think this was fixed, can you try the latest version?
Comment 3 Xiaoying Gu CLA 2011-03-31 07:04:55 EDT
related post in BIRT forum:
http://www.eclipse.org/forums/index.php?t=msg&th=200956&start=0
Comment 4 Zhiqiang Qian CLA 2011-05-16 21:12:30 EDT
fixed.
Comment 5 Xiaoying Gu CLA 2011-05-17 21:11:36 EDT
Verified in 3.7M7