[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [birt-report-engine-dev] NullPointerException atExecutorManager.java 274
|
Found the solution: It was my classpath.
I had too much stuff in my class path. In the past I'd had problems with initialization of the HTMLEmitter when I had my classpath built wrong. In the end, it was the same issue here disguised as a NullPointerException.
I was using a script to dynamically build my classpath and all the jars under the plugins directory were being appended to the classpath. Once I removed those jars and only kept the jars in ReportEngine/lib , my problems were solved.
On Fri, Nov 09, 2007 at 06:58:09AM -0800, Gavares, Grant wrote:
> From: "Gavares, Grant" <gavares@xxxxxxxxxx>
> To: For developers on the BIRT Report Engine project <birt-report-engine-dev@xxxxxxxxxxx>
> Date: Fri, 9 Nov 2007 06:58:09 -0800
> Subject: Re: [birt-report-engine-dev] NullPointerException
> atExecutorManager.java 274
>
> Thanks for the reply Wei.
>
> To my knowledge, I haven't created any sort of extended item. Checking my .rptdesign files, there isn't anything in any called "reportItem".
>
> Also, the reports render fine in other envs using BIRT RE 2.2.1. We have somewhere around 400 reports, all of them working in our webcontainer when our webapp is deployed as a war file. When I deploy the webapp in a directory ( basically the expanded war file ) I see this error.
>
> Could this be caused by a bad classpath?
>
>
> On Thu, Nov 08, 2007 at 05:59:48PM -0800, Wei Yan wrote:
> > From: Wei Yan <wyan@xxxxxxxxxxx>
> > To: For developers on the BIRT Report Engine project <birt-report-engine-dev@xxxxxxxxxxx>
> > Date: Thu, 8 Nov 2007 17:59:48 -0800
> > Subject: RE: [birt-report-engine-dev] NullPointerException
> > atExecutorManager.java 274
> >
> > It seems that you have created you own extended item "reportItem" but
> > failed to implement the IReportItemGeneration. Can you check your report
> > design to see if there exits an extended item "reportItem"?
> >
> > BIRT should do NPE checking after loading the extended item executor. It
> > will be fixed in 2.3.
> >
> > Thanks.
> >
> >
> > -Wei Yan
> >
> >
> > -----Original Message-----
> > From: birt-report-engine-dev-bounces@xxxxxxxxxxx
> > [mailto:birt-report-engine-dev-bounces@xxxxxxxxxxx] On Behalf Of Grant
> > Gavares
> > Sent: Friday, November 09, 2007 3:29 AM
> > To: birt-report-engine-dev@xxxxxxxxxxx
> > Subject: [birt-report-engine-dev] NullPointerException
> > atExecutorManager.java 274
> >
> >
> > Any report that I execute results in a NullPointer exception at
> > ExecutorManager.java: 274.
> >
> > Report Engine: 2.2.1
> > Container: Jetty
> >
> > My Engine is initialized as follows:
> >
> > EngineConfig config = new EngineConfig();
> > config.setEngineHome( "" );
> > config.setLogConfig(null, Level.ALL );
> > IPlatformContext servletContext = new PlatformServletContext(
> > context );
> > config.setPlatformContext(servletContext);
> > config.setResourcePath( BIRT_VIEWER_SCRIPTLIB_DIR );
> > config.setProperty( "BIRT_VIEWER_SCRIPTLIB_DIR",
> > BIRT_VIEWER_SCRIPTLIB_DIR );
> > Platform.startup(config);
> > IReportEngineFactory factory = (IReportEngineFactory)
> > Platform.createFactoryObject(
> > IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
> > engine = factory.createReportEngine(config);
> >
> > The last line executed by my code is:
> >
> > runTask.run( docFileName );
> >
> > I can see that the run task is creating an output file and data is being
> > written to it. The stacktrace from the BIRT Engine:
> >
> >
> > org.eclipse.birt.data.engine.impl.DataEngineImpl <init>
> > Data Engine starts up
> > org.eclipse.birt.report.engine.extension.internal.ExtensionManager
> > createReportItemExecutor
> > WARNING: Create Report Item Executor fail, Config not exist class:
> > reportItem
> > org.eclipse.birt.report.engine.api.impl.RunTask doRun
> > SEVERE: An error happened while running the report. Cause:
> > java.lang.NullPointerException
> > at
> > org.eclipse.birt.report.engine.executor.ExecutorManager$ExecutorFactory.
> > visitExtendedItem(ExecutorManager.java:274)
> > at
> > org.eclipse.birt.report.engine.ir.ExtendedItemDesign.accept(ExtendedItem
> > Design.java:45)
> > at
> > org.eclipse.birt.report.engine.executor.ExecutorManager$ExecutorFactory.
> > createExecutor(ExecutorManager.java:246)
> >
> >
> >
> > Looking at ExecutorManager:274
> >
> > 273: IReportItemExecutor executor = ExtensionManager.getInstance(
> > ).createReportItemExecutor( ExecutorManager.this, tagName );
> > 274: executor.setContext( executorContext );
> >
> > It appears that the null pointer exception is caused by callint
> > setContext on a null IReportItemExecutor object.
> >
> > Looking into ExtensionManager.createReportItemExecutor:
> >
> > 140: IConfigurationElement config = (IConfigurationElement)
> > generationExtensions.get( itemType );
> > 142: if ( config != null )
> > 143 {
> > 144 Object object = createObject( config, "class" );
> > //$NON-NLS-1$
> > 145 if ( object instanceof IReportItemExecutor )
> > 146 {
> > 147 return (IReportItemExecutor) object;
> > 148 }
> > 149 else if ( object instanceof IReportItemGeneration )
> > 150 {
> > 151 return new ExtendedGenerateExecutor( manager,
> > 152 (IReportItemGeneration) object );
> > 153 }
> > 154 logger
> > 155 .log(
> > 156 Level.WARNING,
> > 157 "Create Report Item Executor fail,
> > Config not exist class: {0}", config.getName( ) ); //$NON-NLS-1$
> > 158 return null;
> > 159 }
> >
> >
> > The last log line above is where I was getting the error I pasted in my
> > previous post. That means that this method is returning null.( Perhaps
> > it would be good practice for ExecutorManager to check for null after
> > its call to ExtensionManager in order to avoid the NullPointerException?
> > ) So why am I getting null from ExtensionManager? Looking into the
> > variable *generationExtensions*, its a HashMap thats populated in the
> > method ExtensionManager.loadGenerationExtensionDefns. Here is the body
> > of this method:
> > 337 protected void loadGenerationExtensionDefns()
> > 338 {
> > 339 IExtensionRegistry registry =
> > Platform.getExtensionRegistry();
> > 340 IExtensionPoint extPoint =
> > registry.getExtensionPoint(EXTENSION_POINT_GENERATION);
> > 341 if(extPoint==null)
> > 342 return;
> > 343
> > 344 IExtension[] exts = extPoint.getExtensions();
> > 345 logger.log(Level.FINE, "Start load extension point:
> > {0}", EXTENSION_POINT_GENERATION); //$NON-NLS-1$
> > 346 for (int i = 0; i < exts.length; i++)
> > 347 {
> > 348 IConfigurationElement[] configs =
> > exts[i].getConfigurationElements();
> > 349 for (int j = 0; j < configs.length; j++)
> > 350 {
> > 351 String itemName =
> > configs[j].getAttribute("name"); //$NON-NLS-1$
> > 352 generationExtensions.put(itemName, configs[j]);
> > 353 logger.log(Level.FINE, "Load generation
> > extension: {0}", itemName); //$NON-NLS-1$
> > 354 }
> > 355 }
> > 356 }
> >
> >
> > So it looks like something is missing ( from the error above, I'd say
> > "reportItem" ) from the exts array.
> >
> > Any ideas?
> >
> >
> > _______________________________________________
> > birt-report-engine-dev mailing list
> > birt-report-engine-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/birt-report-engine-dev
> > _______________________________________________
> > birt-report-engine-dev mailing list
> > birt-report-engine-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/birt-report-engine-dev
> _______________________________________________
> birt-report-engine-dev mailing list
> birt-report-engine-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/birt-report-engine-dev