Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 尝试调试birt报告时出现异常_Eclipse_Debugging_Exception_Birt - Fatal编程技术网

Eclipse 尝试调试birt报告时出现异常

Eclipse 尝试调试birt报告时出现异常,eclipse,debugging,exception,birt,Eclipse,Debugging,Exception,Birt,我想调试图表的afterDataSetFilled方法。当我开始调试时,会出现一个对话框,提示我输入所有报表参数的值(其中两个是datetime)。无论使用哪种格式输入datetime参数,都会出现以下异常: SEVERE: Engine exception org.eclipse.birt.report.engine.api.impl.ParameterValidationException: The type of parameter "startDate" is expected as "

我想调试图表的afterDataSetFilled方法。当我开始调试时,会出现一个对话框,提示我输入所有报表参数的值(其中两个是datetime)。无论使用哪种格式输入datetime参数,都会出现以下异常:

SEVERE: Engine exception
org.eclipse.birt.report.engine.api.impl.ParameterValidationException: The type of parameter "startDate" is expected as "dateTime", not "java.lang.String".
    at org.eclipse.birt.report.engine.api.impl.EngineTask.validateParameterValueType(EngineTask.java:865)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.validateAbstractScalarParameter(EngineTask.java:829)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.access$0(EngineTask.java:756)
    at org.eclipse.birt.report.engine.api.impl.EngineTask$ParameterValidationVisitor.visitScalarParameter(EngineTask.java:686)
    at org.eclipse.birt.report.engine.api.impl.EngineTask$ParameterVisitor.visit(EngineTask.java:1400)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.doValidateParameters(EngineTask.java:670)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:94)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.createReport(ReportLauncher.java:594)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.renderReport(ReportLauncher.java:541)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.run(ReportLauncher.java:455)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.main(ReportLauncher.java:104)
    at org.eclipse.birt.report.debug.internal.core.ReportDebugger.start(ReportDebugger.java:39)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
May 10, 2011 10:08:11 AM org.eclipse.birt.report.debug.internal.core.vm.ReportVMServer$1 run
WARNING: [Server] client disconnected
我找不到哪里出了问题。我为报告参数输入的默认值(yyyy-MM-dd HH:MM:ss格式)正常,报告生成正确。但是,启动调试器时,它们以不同的格式输入(MMMM d,y h:mm:ss)。如果我这样离开他们,我会得到例外。如果我将它们更改为yyyy-MM-dd HH:MM:ss格式,仍然会出现异常。这是一个已知的BIRT问题,还是我做错了什么

通过在SQL查询中硬编码这些值(并删除datetime报告参数),我能够绕过这个问题。但在我这么做之后,出现了另一个例外:

SEVERE: Engine exception
org.eclipse.birt.report.engine.api.EngineException: Failed to initialize emitter.
    at org.eclipse.birt.report.engine.emitter.EmitterUtil.getOuputStream(EmitterUtil.java:80)
    at org.eclipse.birt.report.engine.emitter.html.HTMLReportEmitter.initialize(HTMLReportEmitter.java:350)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.initializeContentEmitter(EngineTask.java:2044)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:117)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.createReport(ReportLauncher.java:594)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.renderReport(ReportLauncher.java:541)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.run(ReportLauncher.java:455)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.main(ReportLauncher.java:104)
    at org.eclipse.birt.report.debug.internal.core.ReportDebugger.start(ReportDebugger.java:39)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: java.io.FileNotFoundException: /StandardOCE_PRS2_OperatorProductivity.rptdesign.html (Permission denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
    at org.eclipse.birt.report.engine.emitter.EmitterUtil.getOuputStream(EmitterUtil.java:75)
    ... 22 more
严重:发动机异常
org.eclipse.birt.report.engine.api.EngineeException:未能初始化发射器。
位于org.eclipse.birt.report.engine.emitter.EmitterUtil.getOutStream(EmitterUtil.java:80)
位于org.eclipse.birt.report.engine.emitter.html.HTMLReportEmitter.initialize(HTMLReportEmitter.java:350)
位于org.eclipse.birt.report.engine.api.impl.EngineTask.initializeContentEmitter(EngineTask.java:2044)
位于org.eclipse.birt.report.engine.api.impl.runandendertask.doRun(runandendertask.java:117)
位于org.eclipse.birt.report.engine.api.impl.runandendertask.run(runandendertask.java:77)
位于org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.createReport(ReportLauncher.java:594)
位于org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.renderReport(ReportLauncher.java:541)
位于org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.run(ReportLauncher.java:455)
位于org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.main(ReportLauncher.java:104)
位于org.eclipse.birt.report.debug.internal.core.ReportDebugger.start(ReportDebugger.java:39)
在org.eclipse.equinox.internal.app.eclipseeapphandle.run上(eclipseeapphandle.java:196)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.runApplication(eclipseeappluncher.java:110)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.start(eclipseeappluncher.java:79)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:369)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:179)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:585)
位于org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
位于org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
位于org.eclipse.equinox.launcher.Main.run(Main.java:1407)
位于org.eclipse.equinox.launcher.Main.Main(Main.java:1383)
由以下原因引起:java.io.FileNotFoundException:/StandardOCE\u PRS2\u OperatorProductivity.rptdesign.html(权限被拒绝)
在java.io.FileOutputStream.open(本机方法)
位于java.io.FileOutputStream。(FileOutputStream.java:179)
位于java.io.FileOutputStream。(FileOutputStream.java:131)
位于org.eclipse.birt.report.engine.emitter.EmitterUtil.getOutStream(EmitterUtil.java:75)
... 还有22个

您以前遇到过这个问题吗?你建议我怎么做来修复它

我今天遇到了与您相同的FileNotFoundException,我找到了解决方案

出现异常的原因是文件路径是绝对路径,并试图在/中保存临时文件,但该文件没有写入权限。解决方法是简单地创建文件(/StandardOCE\u PRS2\u OperatorProductivity.rptdesign.html,在您的情况下,我假设您在Linux上),并使运行Eclipse的用户可以编写该文件。这会让你克服这个错误,但我刚刚得到另一个错误,所以这对我来说不是一个好的解决方案。我认为这显然是BIRT插件中的一个bug,因为它应该使用/tmp来实现这一点。它甚至似乎是在调试配置中配置的,但没有使用它

然后我试图找出如何更改调试配置。Eclipse在Report Design透视图中对您隐藏了这一点,因此我有一段时间感到困惑,但是如果您更改为Java透视图,您将看到Debug按钮和完整的Run菜单。从按钮或菜单打开调试配置,您将看到BIRT插件先前为您创建的配置

如果我从那里运行它,它将使用/tmp目录,调试工作正常。现在您还可以使用调试配置。可能有用!:-)

我按照建议做了:

  • 已更改为标准的“调试”透视图
  • 在完整的“运行”菜单下,打开“调试配置”
我将“Temp Folder”条目更改为Windows用户帐户之外的目录(即C-drive下的某个目录,例如:C:\Temp\Birt)。我创建了指定的目录


然后Eclipse调试成功了。

我同意Harrys的解决方案

根本原因是,只有在Eclipse中创建了调试配置时,才会评估对已配置临时文件夹的回退。如果为该报告添加了调试配置,则预填充的临时文件夹工作正常(用户的临时文件夹)。只需创建一个调试配置而不修改任何内容,它就可以工作

如果该报告不存在调试配置,则Eclipse不使用上述默认设置。这就是bug