Intellij Idea 在ReportClientDocument.open()调用中获取错误java.lang.AbstractMethodError

svujldwt  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(215)

我正在尝试自动发布PDF格式的Crystal报告。我使用IDE:IntelliJ Gradle

  1. public void runApprovedSupplierSiteReport(){
  2. // final Config config = ConfigFactory.instance(Config.class);
  3. //CrystalUtil.setupJdbcJndi(Config.getDatabaseServer(), Config.getDatabaseUsername(), Config.getDatabasePassword(), Config.getDatabaseJdbcDriver(), Config.getDatabaseJdbcUrl());
  4. final List<String> paramNames = Config.getMatches(APPROVED_SUPPLIER_SITE_PARAM_REGEX);
  5. final Map<String, String> params = new HashMap<>();
  6. for (final String name : paramNames) {
  7. final String value = Config.getPqp_Report_ApprovedSupplierSite_Param_$0_Value(name);
  8. params.put(name, value);
  9. }
  10. final ReportClientDocument reportDoc = new ReportClientDocument();
  11. try {
  12. // export PDF
  13. final String report = Config.getPqp_Report_ApprovedSupplierSite_Rpt();
  14. reportDoc.open(report, OpenReportOptions._openAsReadOnly);
  15. CrystalUtil.setParamFields(reportDoc, params);
  16. final InputStream is = reportDoc.getPrintOutputController().export(ReportExportFormat.PDF);
  17. //
  18. final Session session = CmisUtil.createSession(Config.getPdmsAtomPubUrl(), Config.getPdmsUser(), Config.getPdmsPassword(), Config.getPdmsRepositoryId());
  19. final Map<String, Object> properties = DocumentManager.getDocumentProperties(
  20. DocType.SUPPLIER_REPORTS,
  21. DocGroup.MQPSD,
  22. SUPPLIER_REPORT_DOC_NUMBER,
  23. SUPPLIER_REPORT_NAME,
  24. new Date());
  25. final String prefix = ConfigUtil.getEnvironmentPrefix(Config.getTwsEnvironmentCode());
  26. final String docName = prefix + String.format(DocFormat.SUPPLIER_REPORTS, PdmsUtil.getDateAsString(new Date()));
  27. final Document document = CmisUtil.createDocument(
  28. session,
  29. docName + ".pdf",
  30. "",
  31. docName,
  32. DocClass.REPORTS,
  33. MediaType.PDF.toString(),
  34. is,
  35. -1,
  36. properties);
  37. Monitor.getLogger().info("<- PDMS report=" + report + " id=" + document.getId() + " versionSeriesId=" + document.getVersionSeriesId());
  38. } catch (final ReportSDKException e) {
  39. String err = e.getMessage();
  40. Monitor.getLogger().error("runApprovedSupplierSiteReport() " + e.getMessage());
  41. logger.error("runApprovedSupplierSiteReport()", e);
  42. } catch (final CmisBaseException e) {
  43. Monitor.getLogger().error("runApprovedSupplierSiteReport() " + e.getErrorContent());
  44. logger.error("runApprovedSupplierSiteReport()", e);
  45. } finally {
  46. CrystalUtil.closeQuietly(reportDoc);
  47. }
  48. }

字符串
在上面的代码片段中,在reportDoc.open(report, OpenReportOptions._openAsReadOnly);行,我得到了以下错误:

  1. java.lang.AbstractMethodError: com.businessobjects.reports.sdk.JRCCommunicationAdapter.setProductLocale(Ljava/util/Locale;)V
  2. at com.crystaldecisions.proxy.remoteagent.z.a(Unknown Source)
  3. at com.crystaldecisions.sdk.occa.report.application.ReportAppSession.int(Unknown Source)
  4. at com.crystaldecisions.sdk.occa.report.application.ReportAppSession.initialize(Unknown Source)
  5. at com.crystaldecisions.sdk.occa.report.application.ClientDocument.new(Unknown Source)
  6. at com.crystaldecisions.sdk.occa.report.application.ReportClientDocument.new(Unknown Source)
  7. at com.crystaldecisions.sdk.occa.report.application.ClientDocument.open(Unknown Source)
  8. at com.crystaldecisions.reports.sdk.ReportClientDocument.open(SourceFile:80)
  9. at com.processstream.pepsico.pqp.tws.ows.PqpOwsJob.runApprovedSupplierSiteReport(PqpOwsJob.java:264)
  10. at com.processstream.pepsico.pqp.tws.ows.PqpOwsJobTest.runApprovedSupplierSiteReport_1(PqpOwsJobTest.java:36)
  11. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  12. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  13. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  14. at java.lang.reflect.Method.invoke(Method.java:606)
  15. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  16. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  17. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  18. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  19. at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
  20. at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
  21. at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
  22. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
  23. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  24. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  25. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  26. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  27. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  28. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  29. at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
  30. at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
  31. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  32. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
  33. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  34. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
  35. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
  36. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
  37. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  38. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  39. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  40. at java.lang.reflect.Method.invoke(Method.java:606)
  41. at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)


我已经检查了所有的抽象类,但所有的方法都是定义的。如果有人能帮助我解决这个错误,请告诉我。

acruukt9

acruukt91#

  1. void com.businessobjects.reports.sdk.JRCCommunicationAdapter.setProductLocale(Locale)

字符串
此方法在用于编译代码的库版本中是具体的,因此IDE很乐意编译对它的调用引用。
部署位置中存在的库是一个不同的版本,其中此方法是抽象的。
这在AbstractMethodError的Javadoc中有描述:
当应用程序试图调用抽象方法时抛出。通常,此错误由编译器捕获;此错误仅在运行时发生,如果自上次编译当前执行的方法以来,某个类的定义发生了不兼容的更改。

相关问题