当前位置: 首页 > 知识库问答 >
问题:

使用PhpJasper[duplicate]创建报告时JDK版本出错

蔚楷
2023-03-14

我试图用PHPJasper创建一些代码,但在同一行我得到了错误。我认为这是JavaSE版本的问题。

文件hello_world.jasper已经存在于我的项目中。

源代码:

require __DIR__ . '/vendor/autoload.php';

use PHPJasper\PHPJasper;

$jasper = new PHPJasper;

$input = __DIR__ . '/vendor/geekcom/phpjasper/examples/hello_world.jasper';
$output = __DIR__ . '/vendor/geekcom/phpjasper/examples';
$options = [
    'format' => ['pdf', 'rtf']
];

$jasper->process(
    $input,
    $output,
    $options
)->execute();

var_dump($jasper);

控制台中带有execute()的行出现错误:

Exception in thread "main" java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
    at de.cenote.tools.classpath.ApplicationClasspath.add(ApplicationClasspath.java:75)
    at de.cenote.tools.classpath.ApplicationClasspath.add(ApplicationClasspath.java:65)
    at de.cenote.tools.classpath.ApplicationClasspath.addJars(ApplicationClasspath.java:134)
    at de.cenote.tools.classpath.ApplicationClasspath.addJarsRelative(ApplicationClasspath.java:151)
    at de.cenote.jasperstarter.App.processReport(App.java:178)
    at de.cenote.jasperstarter.App.main(App.java:109)
PHP Fatal error:  Uncaught PHPJasper\Exception\ErrorCommandExecutable: Your report has an error and couldn 't be processed!\ Try to output the command using the function `output();` and run it manually in the console. in /home/jack/PhpstormProjects/JasperTest/vendor/geekcom/phpjasper/src/PHPJasper.php:219

Java版本:

java -version
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu219.04)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu219.04, mixed mode, sharing)

我怎么才能修好它?

共有1个答案

嵇丰
2023-03-14

我有办法解决这个问题。

我删除所有的java包(sudo apt-get删除openjdk...),并再次安装版本JavaJDK 1.8(ubuntu的指令)

之后,我得到了正确的版本的Java:

java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

我的项目没有错误

 类似资料:
  • 我正在尝试使用JaCoCo为代码覆盖添加报表生成。该项目使用Maven,所以我有Jacoco maven插件配置如下: surefire插件如下: 但是在跑步的最后 mvn清洁包 我犯了这样的错误: [错误]无法执行目标组织。jacoco:jacocomaven插件:0.7。5.201505241946:项目LMS的报告(report):JaCoCo测试报告生成中出现错误。创建报告时出错:无效的文

  • Navicat Monitor 允许你创建、配置和计划发送报告。你可以在报告中包含以下 4 种类型的图表: 启动或关闭状态 面积图或折线图 复制图表 费时查询分析 创建新报告 你可以通过在以下的页面单击 图标或“+ 新建报告”创建新报告。 图表 费时查询 复制 配置 【提示】你可以前往配置页面编辑和删除报告。 选择实例。 添加要包含在报告中的图表。有关将图表添加到报告的更多信息,请参阅添加图表。

  • 使用Netbeans IDE 8.0.2和JDK8,当我尝试生成PDF报告时,我得到以下错误: 无法解析类型java.lang.CharSequence。它从required.class filesvalue=((java.lang.string)field_type.getvalue()).contentequals(“xml”)中间接引用;//$JR_EXPR_ID=26$ 我在网上搜索了一下

  • 问题内容: 我到处都看到JRE,但是我不确定哪个JDK正在编译我的代码。我如何找到? 问题答案: 实际上,Eclipse有其自己的编译器。您可以仅使用JRE和Eclipse开发Java应用程序

  • 当试图显示帧时,在当前线程中没有当前OpenGL上下文。它出现的行可能是GL.createCapabilities();(在私有方法Window.init中)我认为它失败了,因为glcontext没有初始化或类似的东西。 代码如下: 跟踪:

  • 如果我要创建一个数组,并用值初始化它,我会这样做 我想对ArrayList做同样的事情,并有类似的东西 上面这行代码不行,我理解。我试图传达我希望实现的目标。有没有办法在Java做到这一点,而不必做像 或者