I’m trying to generate a PDF from a Pentaho .prpt report file in Java. After a number of issues I’ve reached this problem:
SEVERE: Failed:
org.pentaho.reporting.libraries.resourceloader.ResourceCreationException: There are no root-handlers registered for the factory for type class org.pentaho.reporting.engine.classic.core.metadata.parser.ReportPreProcessorMetaDataCollection
at org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlResourceFactory.create(AbstractXmlResourceFactory.java:176)
at org.pentaho.reporting.libraries.resourceloader.DefaultResourceManagerBackend.create(DefaultResourceManagerBackend.java:291)
at org.pentaho.reporting.libraries.resourceloader.ResourceManager.create(ResourceManager.java:389)
at org.pentaho.reporting.libraries.resourceloader.ResourceManager.create(ResourceManager.java:353)
at org.pentaho.reporting.libraries.resourceloader.ResourceManager.createDirectly(ResourceManager.java:216)
Here is the code I’m using:
ClassicEngineBoot.getInstance().start();
final ResourceManager manager = new ResourceManager();
manager.registerDefaults();
final Resource reportResource = manager.createDirectly(getClass().getResource("/reports/test-report.prtp"), MasterReport.class);
final MasterReport masterReport = (MasterReport) reportResource.getResource();
PdfReportUtil.createPDF(masterReport, new ByteArrayOutputStream());
And here’s the pom snippet (I’m using the repository http://repository.pentaho.org/artifactory/pentaho/):
<dependency>
<groupId>pentaho-reporting-engine</groupId>
<artifactId>pentaho-reporting-engine-classic-core</artifactId>
<version>3.8.0-GA</version>
</dependency>
<dependency>
<groupId>pentaho-reporting-engine</groupId>
<artifactId>pentaho-reporting-engine-classic-extensions</artifactId>
<version>3.8.0-GA</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libloader</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libxml</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libserializer</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libformula</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libfonts</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libformat</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>pentaho-library</groupId>
<artifactId>libdocbundle</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
Does anyone know how to fix this?
The 1.0 snapshot libraries are old and outdated. Do not use them if you use 3.8. Trust your maven and let Maven pull in all the libraries.
Your error should go away as soon as you stop using outdated libraries 😉