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

编译后的JRXML/Jasper无法通过Jasperstudio中引用的库路径加载外部jar

方弘
2023-03-14

这个报告在jasper studio中包含了外部jar,当我在jasper中运行时,没有产生任何错误,但是如果我在laravel上编译它,它会生成错误填充ReportRerror加载scriptlet类。

我在jaspersoft中看到我external.jar只有class=external.jar这样的名称内的路径,我对.jasper文件进行了反向工程,没有关于jasperstarter或php如何访问这个外部jar库的线索

Jasper studio:引用库

/Users/me/Documents/GitHub/myproject/storage/app/file/jasper/external.jar

关于我的JRXML的详细信息:

    <scriptlet name="Scriptlet_1" class="external">
        <scriptletDescription><![CDATA[]]></scriptletDescription>
    </scriptlet>

关于我的PHP的详细信息

 $folderstorage = "/app/file/jasper";
        $folderassets = "/User/file/jasper";
        $namef = "invoice";
        $input = storage_path().$folderstorage."/".$namef.".jasper"; 
        $output = storage_path().$folderstorage;
        $options = [
            'format' => [$ext2],
            'locale' => 'en',
            'params' => ['myid'=>$id],
            'db_connection' => [
                'driver' => 'postgres', //mysql, ....
                'username' => env("DB_USERNAME"),
                'password' => env("DB_PASSWORD"),
                'host' => env("DB_HOST"),
                'database' => env("DB_DATABASE"),
                'port' => env("DB_PORT")
            ]
        ];
        if(file_exists(storage_path().$folderstorage."/".$namafile . '.' . $ext)){
            unlink(storage_path().$folderstorage."/".$namafile . '.' . $ext );
        }
        $jasper = new PHPJasper;
        $jasper->compile($input)->process(
            $input,
            $output,
            $options
        )->execute();

在浏览器中运行时,查看我IDE的控制台:使用$input=storage_path().$folderstorage.“/”.$namef.“.jrxml”;

value = ((external)parameter_Scriptlet_1_SCRIPTLET.getValue()).calcucredit(((java.math.BigDecimal)variable_sumTotalItem.getEstimatedValue()).doubleValue()).toString().toUpperCase(); //$JR_EXPR_ID=26$

使用.Jasper

Error filling reportError loading scriptlet class: calcucredit

在我运行的这个项目中:

  1. Laravel 6.2
  2. Geekcom/phpjasper:3.3
  3. Jasper studio 6.6.0
  4. 在External.jar项目中,我包含了JasperReports-6.7.0

共有1个答案

师博
2023-03-14

为解决这个问题奋斗了好几天,这是一个简单而尴尬的方法。只要这样做:

在jrxml中将external.jar放在vendor/geekcom/phpjasper/bin/jasperstarter/jdbc/external.jar中将scriptletclass放在jasperReport标记中:

 类似资料:
  • 我的模块的构建。分级如下: 我想下载带有AndroidTEstimplementation的依赖项包“AndroidX.text:core:1.2.0”。但现在同步后,我无法在External Libraries文件夹中看到包,如图所示: 但是,如果我使用implementation或而不是androidTestImplementation,它会起作用,并且我可以看到包在外部库中下载,如下所示:

  • 问题内容: 我在 Java 应用程序中使用 JasperReports 。 __ 我有一个名为“ reports”的包,用于存储所有生成的报告。这是我在应用程序中调用jasper报告的方式。 可以了 我没有给出完整的路径,而是尝试了: 但这在运行程序时显示错误: 不适合提供 JRXmlLoader 的完整路径,因为如果要在其他计算机上运行此应用程序,则必须根据计算机路径更改所有编码。所以帮我 问题

  • 问题内容: 有没有办法使用外部存储的源代码并将其加载到Java程序中,以便它可以使用它? 我希望有一个可以在不编辑完整源代码的情况下进行更改的程序,并且甚至无需每次都编译即可。另一个优点是,我可以随意更改部分代码。 当然,我必须具有接口,以便可以将数据发送到其中并再次将其返回到固定的源程序中。 当然,它应该比纯口译系统更快。 那么,有没有办法像对这些外部源代码部分进行额外的编译以及完成此操作后一样

  • 问题内容: 如何从库本身中获取共享库的路径? 换句话说,假设使用来加载库X ,如何从库本身内部访问用于加载所述库的路径? 请注意,我不能首先将这个库加载到该库中。 更新: 这是使用静态变量的方法: 问题答案: 动态链接器实际上搜索几个位置以找到每个动态库。其中包括(来自man ld.so): 环境变量给定的路径 烘焙到二进制文件中的路径将加载条目下的库 缓存文件/etc/ld.so.cache /

  • 我正在尝试用JavaFX制作一个简单的菜单。当我尝试使用相对路径加载图像时,我收到以下异常: 我正在使用eclipse,尽管这个问题似乎不是eclipse特定的,因为我在终端运行时收到了相同的异常。此外,由于某种原因,当文件在包内或src文件夹中时,它会工作(给定的路径会适当更改)。 我当前的活动类在包,位于项目中,具体如下: 项目/src/test/dsp/Menu。JAVA 我试图访问的文件:

  • 2016年3月23日下午5:05:55 org.apache.coyote.abstractProtocol init严重:未能初始化与ProtocolHandler关联的endpoint[“http-bio-8443”]java.io.ioException:由于在