我们正在项目上使用 BIRT,该项目当前依赖于 Javax。
我们需要在 Wildfly 27 上部署并迁移到雅加达,但 BIRT 查看器依赖于尚未迁移到雅加达的 AXIS2。
我们已同意删除 BIRT 查看器模块来绕过此问题。
但是,由于不熟悉所使用的技术,该团队在实现这一目标方面收效甚微。
我们能否获得有关如何删除查看器模块并使其成功编译的明确步骤?
正在使用 Intellij IDE 而不是 Eclipse。
尝试删除整个模块,但编译失败。错误很难诊断,因为 由于 BIRT 是在 Eclipse 中开发的,intellij 代码突出显示不起作用。
BIRT 查看器对 javax 包的依赖。 (核心:viewservlets.jar)
https://download.eclipse.org/birt/updates/release/latest/
解压 birt-runtime-4.17.0-202409160710.zip
JDK 17
apache-tomcat-9.0.96
在
birt.war
目录中找到birt-runtime-4.17.0-202409160710
将
birt.war
放入 apache-tomcat-9.0.96/webapps
启动Tomcat 9
cd apache-tomcat-9.0.96/bin
./startup.sh
http://localhost:8080/birt
000.png
001.png
002.png
cd apache-tomcat-9.0.96/bin
./shutdown.sh
JDK 17
apache-tomcat-10.1.31
在apache-tomcat-10.1.31下创建目录
webapps-javaee
将
birt.war
放入 apache-tomcat-10.1.31/webapps-javaee
启动Tomcat 10
cd apache-tomcat-10.1.31/bin
./startup.sh
http://localhost:8080/birt
与 Tomcat 9 相同
与 Tomcat 9 相同
cd apache-tomcat-10.1.31/bin
./shutdown.sh
示例之一:viewservlets.jar
导入包名称为
jakarta.servlet.ServletConfig
,
package org.eclipse.birt.report.servlet;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.report.context.BirtContext;
import org.eclipse.birt.report.context.IContext;
import org.eclipse.birt.report.presentation.aggregation.IFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.RunFragment;
import org.eclipse.birt.report.service.BirtReportServiceFactory;
import org.eclipse.birt.report.service.BirtViewerReportService;
import org.eclipse.birt.report.service.api.IViewerReportService;
import org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet;
import org.eclipse.birt.report.utility.BirtUtility;
public class ViewerServlet
extends BirtSoapMessageDispatcherServlet {
...
这是原始的、未经修改的 Birt Viewer Server 代码:
导入包名称为
javax.servlet.ServletConfig
,
package org.eclipse.birt.report.servlet;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.report.context.BirtContext;
import org.eclipse.birt.report.context.IContext;
import org.eclipse.birt.report.presentation.aggregation.IFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment;
import org.eclipse.birt.report.presentation.aggregation.layout.RunFragment;
import org.eclipse.birt.report.service.BirtReportServiceFactory;
import org.eclipse.birt.report.service.BirtViewerReportService;
import org.eclipse.birt.report.service.api.IViewerReportService;
import org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet;
import org.eclipse.birt.report.utility.BirtUtility;
public class ViewerServlet
extends BirtSoapMessageDispatcherServlet {
...
现在您已经有了支持 jakarta 的 BIRT Viewer 的相关 jars
您必须使用修改后的jar文件。它们位于 apache-tomcat-10.1.31/webapps/birt/WEB-INF/lib 目录中。您的项目必须复制这些修改后的 jar 文件。其中有 105 个文件。修改(与apache-tomcat-9.0.96/webapps/birt/WEB-INF/lib下的jar文件对比后的结果)。
如果您最终仍然决定不使用 Birt Viewer,也没关系。答案很简单。只提供 PDF 格式的 BIRT 报告是完全可以的,但 HTML 格式的 BIRT 报告在某些格式中仍然可能会导致错误。 (但这是另一个答案。)