2011-08-23 2 views
0

Я пытаюсь создать PDF-файл из файла отчета Pentaho .prpt на Java. После ряда issues я достиг этой проблемы:Pentaho PDF-генерация в java - нет зарегистрированных корневых обработчиков

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) 

Вот код, я использую:

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()); 

А вот ПОМ фрагмент кода (я использую репозиторий 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> 

Кто-нибудь знает, как это исправить?

ответ

0

Библиотеки моментальных снимков 1.0 устарели и устарели. Не используйте их, если используете 3.8. Доверяйте своему maven и позвольте Maven вытащить все библиотеки.

Ваша ошибка должна уйти, как только вы прекратите использование устаревших библиотек;)

0

Вам нужно поместить код ниже:

ClassicEngineBoot.getInstance().start(); 

Внутри вашей начальной загрузки. Это работало для меня, в Грайле.

Смежные вопросы