编程语言
首页 > 编程语言> > BIRT错误:无法确定Java中的默认工作空间位置

BIRT错误:无法确定Java中的默认工作空间位置

作者:互联网

我收到以下错误

java.lang.IllegalStateException: Unable to determine the default workspace location.  Check your OSGi-less platform configuration of the plugin or datatools workspace path.

这没什么意义.

报告是使用Eclipse中的BIRT设计器创建的,我们使用代码将报告转换为PDF.

代码看起来像

    final EngineConfig config = new EngineConfig();
    config.setBIRTHome("./birt");
    Platform.startup(config);
    final IReportEngineFactory factory = (IReportEngineFactory) Platform
            .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);

    final HTMLRenderOption ho = new HTMLRenderOption();
    ho.setImageHandler(new HTMLCompleteImageHandler());
    config.setEmitterConfiguration(RenderOption.OUTPUT_FORMAT_HTML, ho);
    // Create the engine.
    this.engine = factory.createReportEngine(config);
    final IReportRunnable report = this.engine.openReportDesign(reportName);
    final IRunAndRenderTask task = this.engine.createRunAndRenderTask(report);
    final RenderOption options = new HMTLRenderOption();
    options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);
    options.setOutputFormat("pdf");
    final String output = reportName.replaceFirst(".rptdesign", ".xls");
    final String output = name.replaceFirst(".rptdesign", "." + HTMLRenderOption.OUTPUT_FORMAT_PDF);
    options.setOutputFileName( outputReporttName);
    task.setRenderOption(options);


    // Run the report.
    task.run();

但似乎在task.run()方法中,系统抛出错误.

这需要能够独立运行,而不需要eclipse,并且跳过它设置BIRT home会让它开心,但这些似乎是我不知道并且可能不需要的其他连接配置文件.

完整的错误:

07-Jan-2013 14:55:31 org.eclipse.datatools.connectivity.internal.ConnectivityPlugin log
SEVERE: Unable to determine the default workspace location.  Check your OSGi-less      platform configuration of the plugin or datatools workspace path.
07-Jan-2013 14:55:31 org.eclipse.birt.report.engine.api.impl.EngineTask handleFatalExceptions
SEVERE: An error happened while running the report. Cause:
java.lang.IllegalStateException: Unable to determine the default workspace location.  Check your OSGi-less platform configuration of the plugin or datatools workspace path.
at org.eclipse.datatools.connectivity.internal.ConnectivityPlugin.getDefaultStateLocation(ConnectivityPlugin.java:155)
at org.eclipse.datatools.connectivity.internal.ConnectivityPlugin.getStorageLocation(ConnectivityPlugin.java:191)
at org.eclipse.datatools.connectivity.internal.ConnectionProfileMgmt.getStorageLocation(ConnectionProfileMgmt.java:1060)
at org.eclipse.datatools.connectivity.oda.profile.internal.OdaProfileFactory.defaultProfileStoreFile(OdaProfileFactory.java:170)
at org.eclipse.datatools.connectivity.oda.profile.OdaProfileExplorer.defaultProfileStoreFile(OdaProfileExplorer.java:138)
at org.eclipse.datatools.connectivity.oda.profile.OdaProfileExplorer.loadProfiles(OdaProfileExplorer.java:292)
at org.eclipse.datatools.connectivity.oda.profile.OdaProfileExplorer.getProfileByName(OdaProfileExplorer.java:537)
at org.eclipse.datatools.connectivity.oda.profile.provider.ProfilePropertyProviderImpl.getConnectionProfileImpl(ProfilePropertyProviderImpl.java:184)
at org.eclipse.datatools.connectivity.oda.profile.provider.ProfilePropertyProviderImpl.getDataSourceProperties(ProfilePropertyProviderImpl.java:64)
at org.eclipse.datatools.connectivity.oda.consumer.helper.ConnectionPropertyHandler.getEffectiveProperties(ConnectionPropertyHandler.java:123)
at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaConnection.getEffectiveProperties(OdaConnection.java:826)
at org.eclipse.datatools.connectivity.oda.consumer.helper.OdaConnection.open(OdaConnection.java:240)
at org.eclipse.birt.data.engine.odaconsumer.ConnectionManager.openConnection(ConnectionManager.java:165)
at org.eclipse.birt.data.engine.executor.DataSource.newConnection(DataSource.java:224)
at org.eclipse.birt.data.engine.executor.DataSource.open(DataSource.java:212)
at org.eclipse.birt.data.engine.impl.DataSourceRuntime.openOdiDataSource(DataSourceRuntime.java:217)
at org.eclipse.birt.data.engine.impl.QueryExecutor.openDataSource(QueryExecutor.java:407)
at org.eclipse.birt.data.engine.impl.QueryExecutor.prepareExecution(QueryExecutor.java:317)
at org.eclipse.birt.data.engine.impl.PreparedQuery.doPrepare(PreparedQuery.java:455)
at org.eclipse.birt.data.engine.impl.PreparedDataSourceQuery.produceQueryResults(PreparedDataSourceQuery.java:190)
at org.eclipse.birt.data.engine.impl.PreparedDataSourceQuery.execute(PreparedDataSourceQuery.java:178)
at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery.execute(PreparedOdaDSQuery.java:145)
at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.execute(DataRequestSessionImpl.java:624)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:152)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:267)
at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1939)
at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:80)
at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:62)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:43)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:65)
at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)
at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:180)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run    (RunAndRenderTask.java:77)

有没有人看到这个错误,可以指出我正确的方向?

解决方法:

当我遇到这个问题时,我尝试了两件事.第一件事解决了错误,但后来我得到了下一个错误.

我尝试的第一件事是将setenv.sh文件设置为具有以下行:
export CATALINA_OPTS =“$CATALINA_OPTS -Djava.io.tmpdir = / opt / local / share / tomcat / apache-tomcat-8.0.8 / temp / tmpdir -Dorg.eclipse.datatools_workspacepath = / opt / local / share / tomcat / apache -Tomcat-8.0.8 /温度/ TMPDIR / workspace_dtp”

在我在本地tomcat服务器中创建tmpdir和workspace_dtp目录之后,此解决方案正常工作.这是根据指南here完成的.

但是,我刚刚遇到下一个错误,这是一个连接配置文件错误.如果你需要,我可以再次调查一下.我知道如何复制这个问题.

我尝试的第二件事最终完全解决了这个问题,并且与我们的报表设计师在报表设计过程中选择错误类型的数据源有关.有关完整故事,请参阅Eclipse BIRT论坛上的帖子:post.

基本上,当报表类型设置为“JDBC数据源”时,报表类型设置为“查询生成器的JDBC数据库连接”.查看图片以供参考:

标签:java,birt
来源: https://codeday.me/bug/20190709/1411799.html