0

このレポートにはジャスパー スタジオの外部 jar が含まれています。期待どおりに実行されているジャスパーで実行すると、何もエラーは発生しませんが、これを laravel でコンパイルすると、スクリプトレット クラスの読み込み中にエラーが発生します。

私は 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 のコンソールが表示されます。

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

ジャスパーの使用

Error filling reportError loading scriptlet class: calcucredit

このプロジェクトでは、次のように実行します。

  1. ララベル 6.2
  2. geekcom/phpjasper : 3.3
  3. ジャスパースタジオ6.6.0
  4. external.jar プロジェクトに jasperreports-6.7.0 を含めました
4

1 に答える 1

1

この問題を修正するために数日間格闘しましたが、それは単純な方法であり、厄介です. これを行うだけです:

vendor/geekcom/phpjasper/bin/jasperstarter/jdbc/external.jar に external.jar を置きます jrxml で jasperReport タグに scriptletclass を置きます: <jasperReport scriptletClass="external" jasper ソフトで参照ライブラリをパス vendor/geekcom/phpjasper/bin に変更します/jasperstarter/jdbc/external.jar 変更を行った後は常にプレビューをクリックし、キャッシュの最後のスクリプトレットが再表示された場合は jaspersoft を再起動することを忘れないでください。

于 2020-07-15T17:31:52.070 に答える