You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JasperReports 7.0.3 Java调用报错:未注册plsql查询执行器工厂

解决JasperReports 7.0.3调用PLSQL报表报错问题

报错信息:

Failed to generate report: com.fasterxml.jackson.databind.JsonMappingException: No query executer factory registered for the "plsql" language.
at [Source: (ByteArrayInputStream); line: 16, column: 209] (through reference chain: net.sf.jasperreports.engine.design.JasperDesign["query"])


原因

Jasper Studio预览时默认集成了PLSQL查询执行器的支持,但Java项目中若依赖不全或未手动注册对应工厂类,就会触发该错误。

解决方案

1. 补全依赖

如果使用Maven,在pom.xml中添加PLSQL相关依赖:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>7.0.3</version>
</dependency>
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-functions</artifactId>
    <version>7.0.3</version>
</dependency>
<!-- 若使用Oracle数据库,需添加对应JDBC驱动 -->
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.3.0.0</version>
</dependency>

2. 手动注册PLSQL查询执行器工厂

在Java代码生成报表前,注册对应的工厂类:

import net.sf.jasperreports.engine.JasperReportsContext;
import net.sf.jasperreports.engine.query.PlSqlQueryExecuterFactory;
import net.sf.jasperreports.engine.util.JRProperties;

// 获取JasperReports上下文实例
JasperReportsContext jasperContext = JasperReportsContext.getInstance();
// 注册PLSQL查询执行器工厂
JRProperties.setProperty(jasperContext, 
    PlSqlQueryExecuterFactory.PL_SQL_QUERY_EXECUTER_FACTORY_PREFIX + "plsql",
    PlSqlQueryExecuterFactory.class.getName());

3. 校验报表文件的查询语言配置

确认.jrxml文件中的查询语言设置为plsql且拼写无误:

<queryString language="plsql">
    <!-- 你的PLSQL查询语句 -->
</queryString>

内容的提问来源于stack exchange,提问作者Sindhu Malaiyandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:49:52